La clase Brush

La clase Brush

Esta clase representa un objeto de tipo brocha, utilizado para rellenar de diferentes formas, las figuras dibujadas sobre el formulario.

Se trata de una clase abstracta, por lo que tendremos que utilizar alguna de sus diversas clases derivadas, según el estilo de brocha que necesitemos aplicar. Debido a las características 2D de algunas de estas clases, tendremos que importar en nuestro código el espacio de nombres Drawing2D.

Los métodos de la clase Graphics que utilizaremos para dibujar con brochas serán los que comienzan por el nombre FillXXX( )

El menú Dibujo con Brush del formulario de este ejemplo, muestra algunas de las operaciones de dibujo y estilos de relleno, que podemos aplicar con las clases de tipo Brush.

La clase más básica es SolidBrush, que permite rellenar en un estilo sencillo un área dibujada. Ver el Código fuente 541.

Private Sub mnuBrushSolid_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuBrushSolid.Click

Dim oBrush As New SolidBrush(Color.MidnightBlue) Dim oGraphics As Graphics = Me.CreateGraphics() oGraphics.FillRectangle(oBrush, New Rectangle(150, 160, 150, 50))

End Sub

Código fuente 541

A continuación tenemos la clase HatchBrush, que permite la creación de brochas que al pintar aplican un efecto de tramado con un color de fondo y frente. Ver el Código fuente 542.

© Grupo EIDOS 35. GDI+. Acceso al subsistema gráfico de Windows

Private Sub mnuBrushHatch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuBrushHatch.Click

' pintar con brocha de tipo hatch; ' para utilizar este tipo de brocha ' necesitamos importar System.Drawing.Drawind2D

' crear objeto HatchBrush Dim oHatchBrush As New HatchBrush(HatchStyle.Vertical, Color.Fuchsia,

Color.Aqua)

' dibujar y pintar un polígono Dim oGraphics As Graphics = Me.CreateGraphics() oGraphics.FillEllipse(oHatchBrush, New Rectangle(25, 40, 150, 50))

End Sub

Código fuente 542

Podemos emplear un bitmap como base para la zona de relleno que tendrá que pintarse, para ello usaremos la clase TextureBrush, pasándole como parámetro un objeto Bitmap, que previamente habremos creado, y que contendrá un fichero con la textura necesaria. Ver Código fuente 543.

Private Sub mnuBrushTextura_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuBrushTextura.Click

' crear un bitmap Dim oBitmap As New Bitmap("textura1.bmp")

' crear una brocha de textura Dim oTextureBrush As New TextureBrush(oBitmap)

' dibujar una figura y pintarla con la brocha de textura Dim oGraphics As Graphics = Me.CreateGraphics() oGraphics.FillEllipse(oTextureBrush, New Rectangle(220, 15, 100, 75))

End Sub

Código fuente 543

Para efectos avanzados de relleno, consistentes en degradados de colores, utilizaremos las clases LinearGradientBrush y PathGradientBrush. Una vez creado un objeto Brush de estas clases, aplicaremos un conjunto de colores que serán mezclados para crear un efecto de degradado o fundido en el área a pintar, mediante el constructor y/o las propiedades de la clase que corresponda. Ver Código fuente 544.

' pintar figura con brocha LinearGradientBrush Private Sub mnuBrushLinearG_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuBrushLinearG.Click

' crear brocha de tipo LinearGrad. Dim oLGB As New LinearGradientBrush(New Rectangle(10, 50, 40, 60),

Color.Aquamarine, Color.Azure, LinearGradientMode.Horizontal)

' crear array de coordenadas Dim oPuntos(2) As Point

Programación con Visual Basic .NET © Grupo EIDOS

oPuntos(0) = New Point(20, 200) oPuntos(1) = New Point(75, 100) oPuntos(2) = New Point(140, 220)

' obtener contexto gráfico Dim oGraphics As Graphics = Me.CreateGraphics()

' dibujar y pintar una curva cerrada oGraphics.FillClosedCurve(oLGB, oPuntos)

End Sub

'------------------------------------------- ' pintar figura con brocha PathGradientBrush Private Sub mnuBrushPathG_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuBrushPathG.Click

' array de coordenadas Dim oPuntos(2) As Point oPuntos(0) = New Point(100, 150) oPuntos(1) = New Point(175, 80) oPuntos(2) = New Point(210, 150)

' crear brocha de tipo PathGradient, ' y configurar el objeto Dim oPGB As New PathGradientBrush(oPuntos) oPGB.CenterColor = Color.Indigo oPGB.SurroundColors = New Color() {Color.Beige, Color.LightGreen}

' crear gráfico y pintar polígono Dim oGraphics As Graphics = Me.CreateGraphics() oGraphics.FillPolygon(oPGB, oPuntos)

End Sub

Código fuente 544

La Figura 328 muestra todas las formas dibujadas con objetos de los tipos derivados de Brush.

Figura 328. Figuras dibujadas y pintadas con objetos derivados de Brush.

© Grupo EIDOS 35. GDI+. Acceso al subsistema gráfico de Windows