Número 50julio-AGOSTO 2008

Visual Basic•C#•ASP.NET•ADO.NET•AJAXSilverlight.NET Framework

dotNetManía

Revista dedicada a los profesionales de la plataforma .NET

Menú

Inicio

Números publicados

Libros

Próximo número (nº51)

Autores

¿Qué es dotNetManía?

Garantía de satisfacción

Contactar

Pedidos

Suscripciones

Renovaciones

Libros

Noticias dnm

Alhambra-Eidos llega a un acuerdo con dotNetManía para la difusión conjunta de su oferta formativa. Leer más...


Disponibles los primeros 28 números de dotNetManía en formato PDF y de libre distribución. Leer más... 

Patrocinadores

Patrocinador Oro
Microsoft

Patrocinadores Plata
Alhambra-Eidos
Solid Quality Mentors

Patrocinadores Bronce
Raona
Plain Concepts
Krasis
ABOX 

 

 

 

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
 

 

dotNetManía es una revista editada por Netalia. Más información.