Colaboraciones en el Guille

GDI+ Crear gráficos permanentes

Utilización del método OnPaint  - Formas Básicas

 

Fecha: 09/Sep/2005 (08 de Setiembre de 2005)
Autor:  Ing. Fernando Luque Sánchez - DCE 4 Estrellas

[email protected]


Sres. Desarrolladores, en las entregas anteriores publiqué como crear de forma sencilla gráficos utilizando GDI+, estas entregas están en los siguientes enlaces:

Textos Artísticos:
http://elguille.info/colabora/NET2005/FernandoLuque_GDITexto01.htm

Texto con sombra:
http://elguille.info/colabora/NET2005/FernandoLuque_GDITexto02.htm

Texto en Contorno:
http://elguille.info/colabora/NET2005/FernandoLuque_GDITexto03.htm

Texto en Block, Cursiva y Reflejo:
http://elguille.info/colabora/NET2005/FernandoLuque_GDITexto04.htm

Los que siguieron y bajaron los gráficos se dieron cuenta de lo siguiente, EL GRAFICO SE DIBUJA y AL CAMBIAR DE FORMULARIO Y CAMBIAR LA APLICACION Y REGRESAR......¡¡¡¡ DESAPARECE !!!

Existe una forma de graficar lo que deseamos para crear una mejor presentación de manera permanente, es decir, cambiarmos de enfoque nuestro formulario, regresamos y permanece la imagen dibujada.

El Ejemplo

Gráficos Permanentes

A continuación sigue código en Visual Basic:

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)

        'Definición del Objeto Gráfico
        Dim grafico As Graphics
        grafico = e.Graphics

        'El Pincel
        Dim pincel As New Pen(Color.Red, 4)

 

        'Un Rectángulo
        grafico.DrawRectangle(pincel, 10, 50, 120, 30)
        'Otra Forma para el Rectángulo
        Dim Rectangulo As New Rectangle(150, 20, 100, 50)
        grafico.DrawRectangle(pincel, Rectangulo)

        ' Líneas
        grafico.DrawLine(New Pen(Color.Olive, 4), 60, 100, 100, 100)
        grafico.DrawLine(New Pen(Color.OrangeRed, 4), 20, 130, 100, 130)
        grafico.DrawLine(New Pen(Color.Magenta, 4), 30, 200, 150, 100)

        'Un Triágulo - Se define un Array de Puntos (Point)
        Dim PuntosTriangulo() As Point = {New Point(150, 350), New Point(80, 280), New Point(30, 400)}
        grafico.DrawPolygon(New Pen(Color.Orange, 3), PuntosTriangulo)

        'Texto Artístico
        'Para Block se definen los colores de fuente y de la sombra
        Dim pincelSombra As Brush = Brushes.DarkBlue
        Dim pincelFuente As Brush = Brushes.GreenYellow
        'Creamos la fuente 
        Dim miLetra As New Font("Times New Roman", 55, FontStyle.Bold, GraphicsUnit.Pixel)

        Dim TextoSize As SizeF
        TextoSize = grafico.MeasureString("Net Desarrollo", miLetra)
        'Los valores para la ubicación
        Dim xPos, yPos As Single
        xPos = 300
        yPos = 30

       'Ya están definidos los elementos: 
        'Grafico, Pinceles, Fuente, Tamaño y posición. 
       'Dibujar el texto ahora...usar el método DrawString
       'Primero la sombre y luego el frente. Dibujar todo el sombreado inclinado

        Dim i As Integer
        For i = 10 To 0 Step -1
            grafico.DrawString("Net Desarrollo", miLetra, pincelSombra, _
                            xPos - i, yPos + i)
        Next

        'Dibujar la parte frontal
        grafico.DrawString("Net Desarrollo", miLetra, pincelFuente, _
                        xPos, yPos)

        'Elipses
        Dim RectaElipse As New Rectangle(30, 400, 300, 50)
        grafico.DrawEllipse(New Pen(Color.SlateBlue, 6), RectaElipse)  

End Sub

Como pueden darse cuenta, al implementar el método OnPaint del formulario los objetos dibujados en este procedimiento permanecen en este mientras esta abierto, al cambiar de enfoque al formulario y al redimensionar también.

El código completo esta en el empaquetado al final del artículo, no olvides votar, eso me alienta a seguir publicando.

Ing. Fernando Luque Sánchez
CIP 61806
De Trujillo - Perú para el mundo


Espacios de nombres usados en el código de este artículo:

System.Drawing
System.Drawing.Drawing2D


Fichero con el código de ejemplo: FernandoLuque_GDIPermanentes.zip  (07) KB


ir al índice principal del Guille