| Nº 4 Mayo 2004 • Relleno de formas gráficas, texturas, degradados y otros efectos avanzados con GDI+ | Por Luis Miguel Blanco El conjunto de clases incluido en el espacio de nombres System.Drawing, provee al programador de todas aquellas características necesarias para dotar a los gráficos de efectos adicionales, que permitan aportarles una mayor vistosidad. A lo largo de este artículo, realizaremos un repaso de los principales elementos existentes en GDI+, de forma que sirvan de base al lector para la elaboración de sus propios efectos.
Con un poco de imaginación y las clases de GDI+, podemos conseguir efectos realmente notables con menor esfuerzo del que requería la creación gráfica a base de llamadas al API de Windows, gracias al modelo robusto y cohesionado de clases que proporciona la plataforma .NET Framework |
Bibliografía GDI+ Programming in C# and VB.NET
Editorial: a!press Autor: Nick Symmonds ISBN: 1-59059-035-X Páginas: 589 Publicación: Junio/2002 A complete text-printing framework using GDI+
Editorial: Wrox Autor: Andreas Papathanasis Formato: PDF/ 373 Kb ISBN: B00007EIMK Páginas: 40 Publicación: Noviembre/2002
Más información ElGuille.info Gráficos vectoriales con Visual Basic.NET WillyDev.net Donkye. Interesante Video Juego desarrollado combinando estas tecnologías.
Código fuente ' definir color Dim oColor As Color oColor = Color.FromName("Green") ' crear objeto brush Dim oSolidB As New SolidBrush(oColor) ' obtener el dispositivo gráfico y crear dibujo Dim oGraphics As Graphics = Me.CreateGraphics() oGraphics.FillEllipse(oSolidB, New Rectangle(25, 45, 150, 50)) oGraphics.Dispose() Fuente 1. |
' obtener imagen de archivo Dim oBitmap As New Bitmap("E:\Pruebas\MiTextura.gif") ' crear textura de la imagen Dim oTextureB As New TextureBrush(oBitmap) ' definir coordenadas de la figura Dim aCoordenadas(4) As Point aCoordenadas(0) = New Point(20, 20) aCoordenadas(1) = New Point(70, 100) aCoordenadas(2) = New Point(100, 75) aCoordenadas(3) = New Point(120, 75) aCoordenadas(4) = New Point(160, 40) ' obtener el dispositivo gráfico y crear dibujo Dim oGraphics As Graphics = Me.CreateGraphics() oGraphics.FillClosedCurve(oTextureB, aCoordenadas) oGraphics.Dispose() Fuente 2. |
Imports System.Drawing.Drawing2D '.... '.... Dim oHatchB1 As New HatchBrush(HatchStyle.HorizontalBrick, _ Color.Aquamarine, Color.DarkMagenta) Dim oHatchB2 As New HatchBrush(HatchStyle.SolidDiamond, _ Color.Aquamarine, Color.DarkMagenta) Dim oGraphics As Graphics = Me.CreateGraphics() oGraphics.FillRectangle(oHatchB1, New Rectangle(40, 40, 100, 50)) oGraphics.FillEllipse(oHatchB2, New Rectangle(40, 110, 100, 50)) oGraphics.Dispose() Fuente 3. |
Imports System.Drawing.Drawing2D '.... '.... Dim oLinearGradB As New LinearGradientBrush(New Point(15, 10), _ New Point(100, 75), _ Color.DarkGreen, Color.LightSkyBlue) Dim oGraphics As Graphics = Me.CreateGraphics() oGraphics.FillRectangle(oLinearGradB, New Rectangle(15, 10, 80, 65)) oGraphics.Dispose() Fuente 4. |
Imports System.Drawing.Drawing2D '.... '.... ' coordenadas para realizar el degradado Dim pntPuntos(4) As Point pntPuntos(0) = New Point(20, 70) pntPuntos(1) = New Point(80, 10) pntPuntos(2) = New Point(140, 70) pntPuntos(3) = New Point(100, 150) pntPuntos(4) = New Point(55, 150) ' array de colores para los bordes de la figura Dim aColores(1) As Color aColores(0) = Color.Aqua aColores(1) = Color.Turquoise ' crear objeto para el degradado Dim oPathGradB As New PathGradientBrush(pntPuntos) oPathGradB.SurroundColors = aColores oPathGradB.CenterColor = Color.DarkGreen Dim oGraphics As Graphics = Me.CreateGraphics() ' dibujar figura usando el objeto ' para el degradado oGraphics.FillPolygon(oPathGradB, pntPuntos) oGraphics.Dispose() Fuente 5. |
Imports System.Drawing.Drawing2D '.... '.... ' crear el objeto GraphicsPath Dim oGPath As New GraphicsPath ' añadir figuras dentro del objeto Dim aPuntos(2) As Point aPuntos(0) = New Point(100, 120) aPuntos(1) = New Point(130, 70) aPuntos(2) = New Point(160, 120) oGPath.AddPolygon(aPuntos) oGPath.AddEllipse(New Rectangle(105, 10, 50, 50)) oGPath.AddEllipse(New Rectangle(45, 110, 50, 50)) oGPath.AddEllipse(New Rectangle(165, 110, 50, 50)) Dim oGph As Graphics = Me.CreateGraphics oGph.FillPath(New HatchBrush(HatchStyle.Sphere, Color.Aquamarine), _ oGPath) oGph.Dispose() Fuente 6. |
' objeto Font con el tipo de letra Dim oTipoLetra As New Font("Lucida Console", _ 45, FontStyle.Italic, GraphicsUnit.Pixel) ' objeto SolidBrush Dim oSBrush As New SolidBrush(Color.Olive) Dim oGraphics As Graphics = Me.CreateGraphics() ' dibujar texto en modo gráfico oGraphics.DrawString("Hola mundo desde GDI+", _ oTipoLetra, oSBrush, New PointF(10, 10)) oGraphics.Dispose() Fuente 7. |
Imports System.Drawing.Drawing2D '.... '.... Dim oTipoLetra As New Font("Comic Sans MS", _ 55, FontStyle.Bold, GraphicsUnit.Pixel) Dim oHBrush As New HatchBrush(HatchStyle.NarrowVertical, _ Color.Cornsilk) Dim oGraphics As Graphics = Me.CreateGraphics() oGraphics.DrawString("Hola mundo desde GDI+", _ oTipoLetra, oHBrush, New RectangleF(10, 10, 250, 400)) oGraphics.Dispose() Fuente 8. |
Volver | | |
|