Sei sulla pagina 1di 6

DIBUJAS Y PINTAR

Para pintar los grficos (incluyendo texto), as como para mostrar los elementos que componen
la interfaz de usuario, Windows utiliza la interfaz de dispositivos grficos GDI+ (Graphics Device
Interface), la cual se encarga de llamar a las rutinas de los distingos gestores de dispositivo que
son las que directamente actan sobre el dispositivo

Puesto que existen muchos dispositivos grficos de salida


diferentes soportados por Windows, uno de los objetivos
principales de la GDI+ es permitir mostrar los grficos
independientemente del dispositivo utilizado, para que las
aplicaciones se ejecuten independientemente de las
caractersticas del dispositivo grafico de salida

Los dispositivos grficos se pueden agrupar en:

Dispositivos matriciales (o raster): Representan los grficos


como una matriz de puntos, Algunos que pertenecen a este
grupo son: adaptadores de video, impresoras lser y
matriciales
Dispositivos Vectoriales: representan los grficos utilizando
lneas, los Plotters o trazadores grficos pertenecen a este
grupo.

Como gran parte de la programacin grafica tradicional est basada exclusivamente en vectores,
pero los dispositivos de salida grficos en su mayora utilizan pixeles, es por eso, que la GDI+
ha sido escrita para ser utilizada como un sistema de alto nivel y tambin para manipular puntos
(pixeles) bajo nivel

Otro punto tiene que ver con la resolucin grfica de los dispositivos y la capacidad de color. Para
que una aplicacin se ajuste a diferentes adaptadores de video con diferentes resoluciones el
lenguaje grfico tiene que proporcionar herramientas para poder determinar las caractersticas del
hardware, es por eso que la GDI+ se ha construido para que el usuario no tenga que preocuparse
por este punto.

Cuando el dispositivo sobre el que se muestra la informacin es la pantalla Windows utiliza el


rea de cliente de una ventana de la aplicacin para dibujar. Para informar sobre la necesidad de
realizar una operacin de dibujo, la ventana generara un evento Paint, lo que provocara que se
ejecute el controlador que est asociado con dicho evento. Y esto ocurre en los siguientes casos:

Cuando el tamao de una ventana se modifica


Cuando un rea de una ventana cubierta por otra ventana se descubre porque se mueve o
se cierra esta ltima.
En la mayora de los casos en los que parte de ventana es cubierta por otro elemento, es Windows
en el guarda en algn lugar en la memoria la informacin necesaria para repintar dicha ventana,
si esto no sucede habr que escribir el cdigo necesario para que en respuesta al evento Paint
pueda repintarse el rea descubierta
La parte de la ventana que se repinta, por ejemplo un rectngulo, esta se denominada Regio no
valida. Para automatizar el proceso de repintado Windows mantiene internamente una estructura
de informacin de dibujo para cada ventana. Tambin, cuando sea preciso, desde el cdigo se
puede declarar no valida una regin para que se repinte (mtodo Invalidate).

SERVICIOS GDI+
Los servicios de GDI+ engloban tres amplias categoras: grficos vectoriales 2D, imgenes y
tipografa
Los grficos vectoriales estn relacionado con el dibujo de tipos primitivos (como lneas, curvas
y figuras) que se especifican mediante conjuntos de puntos en un sistema de coordenadas. Para
realizar estos grficos, el GDI+ proporciona clases y estructuras que realmente realizan el dibujo.
Por ejemplo, la estructura Rectangle almacena la ubicacin y el tamao de un rectngulo; la clase
Pen almacena informacin sobre el color, ancho y estilo de lnea; por otro lado la clase Brush
almacena informacin sobre el color de fondo y la clase Graphics proporciona los mtodos para
dibujar lneas y otras figuras.
Por otra parte, imgenes como las mostradas por los botones de una barra de herramientas, o bien
una fotografa digital, son tipos de imgenes que dependiendo de los casos, son muy difciles de
mostrar o simplemente no se pueden con las tcnicas de grficos vectoriales. Por eso, estas se
almacenan como mapas de bits (matrices de nmeros que representan los colores de puntos
individuales de la pantalla). GDI+ proporciona la clase Bitmap para mostrar, manipular y guardas
mapas de bits.
Finalmente, la tipografa se ocupa de la presentacin de texto en diversas fuentes, tamaos y
estilos
Todos los servicios de GDI+ son suministrados por un amplio conjunto de clases, estructuras y
enumeraciones agrupadas en los siguientes espacios de nombres:

System.Drawing: Proporciona acceso a los mtodos grficos


bsicos del GDI+.
System.Drawing.Drawing2D: Proporciona mtodos grficos
vectoriales bidimensionales avanzados
System.Drawing.Imaging: Proporciona mtodos para
manipular imgenes avanzadas
System.Drawing.Text: Proporciona mtodos para manipular
la presentacin del texto
System.Drawing.Printing: Proporciona servicios
relacionados con la impresin

OBJETOS DE DIBUJO BASICOS

GRAPHICS

La clase Graphics es la base de la funcionalidad proporcionada por la GDI+ esta es la clase que
realmente dibuja lneas, curvas, figuras entre otras cosa
Antes de empezar a dibujar, se debe elegir la superficie en la que
se quiere dibujar, el tipo de forma que se desea dibujar y los
instrumentos necesarios para la realizacin de este.

La superficie estar representada por un objeto Graphics, y sus


mtodos permitirn dibujar todas las formas bsicas, despus
elegiremos los instrumentos Pen y Brush para dibujar y rellenar
respectivamente. Por ltimo, dibujaremos la forma llamando al
mtodo adecuado del objeto Grapchis. Por ejemplo, el siguiente cdigo dibuja una lnea azul

Graphics g = this.CreateGraphics();
Pen lapizAzul = new Pen(Color.Blue);
Point puntoA = new Point(10, 10);
Point puntoB = new Point(200, 100);
g.DrawLine(lapizAzul, puntoA, puntoB);

La primera sentencia elige la superficie correspondiente al objeto this para dibujas. La sentencia
siguiente crea un lpiz azul. Las dos sentencias siguientes definen los extremos de la lnea a
dibujar, las coordenadas estn expresadas en pixeles. Y la ltima sentencia dibuja una lnea
llamando al mtodo DrawLine este mtodo acepta como primer parmetro el instrumento con el
que se dibujara y como siguientes parmetros los puntos que definen la lnea a dibujar
Todas las coordenas se expresan por defecto en pixeles, aunque, es posible especificar las
coordenadas en otras unidades, dependiendo de lo que se esta dibujando y dejar que la GDI+ las
convierta en pixeles antes de dibujar
El sistemas de coordenas predeterminado tiene
el origen en la esquina superior izquierda de la
superficie de dibujo, con el eje X apuntando hacia la
derecha y el eje Y apuntando hacia abajo

OBJETO GRAPHICS
El objeto Graphics es la superficie de dibujo. Cada control sobre el que se puede dibujar expone
su superficie a travs de un objeto Graphics
Para recuperar el objeto Graphics de un objeto hay que invocar el mtodo CreateGraphics de ese
ese objeto
Graphics g = this.CreateGraphics();

A su vez requerira importar el espacio de nombres: using System.Drawing;

Una vez realizadas las operaciones anteriores, la aplicacin podr dibujar sobre la superficie
representada por el objeto Graphics. Por ejemplo:
private void btDibujar_Click(object sender, EventArgs e)
{
Graphics g = CreateGraphics();
g.DrawLine(Pens.Blue, 10, 10, 200, 100);
}

El mtodo anterior corresponde con el controlador del evento


Click del botn de pulsacin btDibujar. La primera sentencia
recupera el objeto Graphics que representa la superficie de dibujo
correspondiente al rea de cliente y la segunda sentencia dibuja una lnea azul definida por los
puntos (10,10) y (200,100).

El mtodo apropiado para iniciar el objeto Graphics e insertar el cdigo de dibujo es el controlador
del evento Paint del objeto al que corresponde la superficie de dibuj0, ya que este evento es
generado por un objeto cada vez que necesita repintarse

private void pictureBox1_Paint(object sender, PaintEventArgs e)


{
Graphics g = e.Graphics;
g.DrawLine(Pens.Blue, 10, 10, 200, 100);
}

A diferencia del ejemplo anterior, ahora el objeto Graphics se


obtiene a travs de argumento e del controlador del evento Paint.

OBJETO COLOR
El objeto Color del espacio de nombres System.Drawing representa un color por ejemplo

public partial class Form1 : Form


{
private Color ColorFondo;
private Color colorPrimerPlano;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender,


EventArgs e)
{
ColorFondo = Color.Gray;
colorPrimerPlano = Color.Black;
pictureBox1.BackColor = ColorFondo;
}
}

El ejemplo anterior define un color para el fondo de un objeto y otro para el primer plano, como
atributos de la clase Form1. Despues inicia ambas variables en el controlador del evento Load
del formulario con los colores gris y negro. Finalmente, en el mismo controlador, establece el
color de fondo del control PictureBox1 (propiedad BackColor).

OBJETO PEN
Todos los mtodos de dibujo de la clase Graphics operan junto con un objeto Pen; esto es, para
dibujar cualquier forma, deben crearse como mnimo un objeto Graphics para definir la superficie
de dibujo y un objeto Pen que defina el color y el ancho de lnea del elemento que se va a dibujar

private void pictureBox1_Paint(object sender, PaintEventArgs e)


{
Pen lapizNegroN3 = new Pen(colorPrimerPlano, 3);
Graphics g = e.Graphics;
g.DrawEllipse(lapizNegroN3, 10, 10, 200, 100);
}

Este ejemplo define un lpiz (lapizNegroN3), de color negro y de


ancho 3 pixeles que posteriormente es utilizado por el mtodo
DrawEllipse para dibujar una elipse. Si se omite el segundo argumento del constructor Pen, se
creara uno con anchura de un pixel.

OBJETO BRUSH
Cuando se dibuja una forma, por ejemplo un rectngulo, se rellena con color de fondo actualmente
establecido. Para rellenarla con otro color Solido, con un patrn o con un mapa de bits hay que
crear una brocha o pincel y aplicarlo a la forma invocando al mtodo adecuado

private void pictureBox1_Paint(object sender, PaintEventArgs e)


{
SolidBrush brochaSolidaVerdeMar = new SolidBrush(Color.LightSeaGreen);

Pen lapizNegroN3 = new Pen(colorPrimerPlano, 3);


Graphics g = e.Graphics;
g.DrawEllipse(lapizNegroN3, 10, 10, 200, 100);
g.FillEllipse(brochaSolidaVerdeMar, 10, 10, 200, 100);
}

Este ejemplo dibuja una elipse y pinta todo su interior con la


brocha brochaSolidaVerdeMar. La brocha es un objeto de la
clase SolidBrush. Esto es asi porque Brush es una clase abstracta
de lo que se derivan los distintos tipos de brochas que podemos
utilizar:

SolidBrush: Utiliza un color solido para rellenar el interior


de una forma

HatchBrush: Utiliza un rayado para rellenar el interior de una


forma
Entre otros.
OBJETO POINT
Un objeto Point representa un punto en la superficie de dibujo y se expresa con un par de
coordenadas (x,y). La coordenada x es la distancia horizontal desde el origen (0,0) y la coordenada
y es la distancia vertical desde el origen
Por ejemplo, el siguiente cdigo dibuja una lnea definida por los puntos A y B:

private void pictureBox1_Paint(object sender,PaintEventArgs e)


{
Graphics g = e.Graphics;
Point A = new Point(10, 10);
Point B = new Point(200, 100);
g.DrawLine (Pens.Blue, A,B);
}

Tambin se puede llegar el caso en que se necesiten coordenadas


fraccionarias, en este caso hay que utilizar un objeto de tipo PointF
que definen sus atributos X e Y de tipo float.

Potrebbero piacerti anche