Como Crear Objetos Graphics para Dibujar en C.docx

4

Click here to load reader

Transcript of Como Crear Objetos Graphics para Dibujar en C.docx

Page 1: Como Crear Objetos Graphics para Dibujar en C.docx

Como Crear Objetos Graphics para Dibujar en C# .NETPublicado por Antonio Adán Casillas C.

Antes de dibujar líneas y formas, representar texto o mostrar y manipular imágenes con GDI+ es preciso crear un objeto Graphics. El objeto Graphics representa una superficie de dibujo de GDI+ y se usa para crear imágenes gráficas.  Para trabajar con gráficos existen los dos pasos siguientes: 1.    Crear un objeto Graphics.2.    Usar el objeto Graphics para dibujar líneas y formas, representar texto o mostrar y manipular imágenes.

Crear un objeto Graphics 

El objeto Graphics se puede crear de diversas formas. Para crear un objeto Graphics•    Reciba una referencia a un objeto Graphics como parte de PaintEventArgs del evento Paint de un formulario o un control. Este es el modo en que normalmente se obtiene una referencia a un objeto Graphics cuando se crea código de dibujo para un control. De forma similar, también se puede obtener un objeto gráfico como una propiedad de PrintPageEventArgs al controlar el evento PrintPage de un objeto PrintDocument.  O bien •    Llame al método CreateGraphics de un control o un formulario para obtener una referencia a un objeto Graphics que represente la superficie de dibujo de dicho control o formulario. Utilice este método si desea dibujar en un formulario o en un control que ya existía con anterioridad.  O bien •    Cree un objeto Graphics a partir de cualquier objeto que herede de Image. Este método resulta útil cuando se desea alterar una imagen que ya existe. 

 Las secciones siguientes proporcionan detalles sobre cada uno de estos procesos. 

PaintEventArgs en el controlador de eventos Paint 

Al programar PaintEventHandler para controles o el evento PrintPage de un objeto PrintDocument, se proporciona un objeto gráfico como una de las propiedades de PaintEventArgs o PrintPageEventArgs.Para obtener una referencia a un objeto Graphics a partir de PaintEventArgs en el evento Paint1.    Declare el objeto Graphics. 2.    Asigne la variable que hará referencia al objeto Graphics pasado como parte de PaintEventArgs. 3.    Inserte código para dibujar en el formulario o control. 

 

En el ejemplo siguiente se muestra cómo hacer referencia a un objeto Graphics desde PaintEventArgs en el evento Paint:  private void Form1_Paint(object sender,    System.Windows.Forms.PaintEventArgs pe) 

Page 2: Como Crear Objetos Graphics para Dibujar en C.docx

{   // Declares the Graphics object and sets it to the Graphics object   // supplied in the PaintEventArgs.   Graphics g = pe.Graphics;   // Insert code to paint the form here.}

CreateGraphics (Método) 

También puede utilizar el método CreateGraphics de un control o un formulario para obtener una referencia a un objeto Graphics que represente la superficie de dibujo de dicho control o formulario. Para crear un objeto Graphics con el método CreateGraphics•    Llame al método CreateGraphics del formulario o del control en el que desee representar gráficos. Graphics g;// Sets g to a graphics object representing the drawing surface of the// control or form g is a member of.g = this.CreateGraphics();

Crear un objeto Graphics a partir de un objeto Image 

También se puede crear un objeto Graphics a partir de cualquier objeto que se derive de la clase Image. Para crear un objeto Graphics a partir de un objeto Image•    Llame al método Graphics.FromImage, suministrando el nombre de la variable Image a partir de la cual desea crear un objeto Graphics. En el ejemplo siguiente se muestra cómo usar un objeto Bitmap: Bitmap myBitmap = new Bitmap(@"C:\Documents and    Settings\Joe\Pics\myPic.bmp");Graphics g = Graphics.FromImage(myBitmap);

Nota Sólo puede crear objetos Graphics a partir de archivos .bmp no indizados, como archivos .bmp de 16 bits, 24 bits y 32 bits. Cada píxel de archivos .bmp no indizados alberga un color, a diferencia de los píxeles de los archivos .bmp indizados, que albergan un índice que hace referencia a una tabla de colores. 

Cómo Dibujar una línea en un formulario Windows FormsEn este ejemplo se dibuja una línea en un formulario. Normalmente, cuando se dibuja en un formulario, se controla el evento Paint del formulario y se realiza el gráfico mediante la propiedad Graphics de PaintEventArgs, como se muestra en este ejemplo.

Pen pen = new Pen(Color.FromArgb(255, 0, 0, 0));e.Graphics.DrawLine(pen, 20, 10, 300, 100);

Cómo: Dibujar una forma con contorno En este ejemplo se dibujan contornos de elipses y rectángulos en un formulario.private void DrawEllipse(){System.Drawing.Pen myPen = new          

Page 3: Como Crear Objetos Graphics para Dibujar en C.docx

System.Drawing.Pen(System.Drawing.Color.Red);       System.Drawing.Graphics formGraphics;       formGraphics = this.CreateGraphics();        formGraphics.DrawEllipse(myPen, new Rectangle(0, 0, 200, 300));        myPen.Dispose();        formGraphics.Dispose();    }

    private void DrawRectangle()    {        System.Drawing.Pen myPen = new   System.Drawing.Pen(System.Drawing.Color.Red);        System.Drawing.Graphics formGraphics;        formGraphics = this.CreateGraphics();        formGraphics.DrawRectangle(myPen, new Rectangle(0, 0, 200, 300));        myPen.Dispose();        formGraphics.Dispose();    }

Cómo Dibujar texto en un formulario Windows En el ejemplo de código siguiente se muestra cómo utilizar el método DrawString de Graphics para dibujar texto en un formulario. Por otra parte, puede utilizar TextRenderer para dibujar texto en un formulario. Para obtener más información, vea Cómo: Dibujar texto con GDI. 

    public void DrawString()    {        System.Drawing.Graphics formGraphics = this.CreateGraphics();        string drawString = "Sample Text";        System.Drawing.Font drawFont = new System.Drawing.Font("Arial", 16);        System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);        float x = 150.0F;        float y = 50.0F;        System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat();        formGraphics.DrawString(drawString, drawFont, drawBrush, x, y, drawFormat);        drawFont.Dispose();        drawBrush.Dispose();        formGraphics.Dispose();    }