Artículo Relleno de Figuras (Instrucción Paint)
Autor Harvey Triana
Tema Programación general de gráficos con Visua Basic
Actualización Septiembre 20 de 1997
Descripción Procedimiento para rellenar una figura cerrada con un color y/o patrón..

Relleno de Figuras

El procedimiento Sub Paint( ), hace lo mismo que la instrucción Paint de Quick Basic, VB no incorpora la instrucción -¿ Porqué ?. Se invoca con un objeto PictureBox que contien la figuara. El código se muestra a continuación:

'--------------------------------------------------------------------
'Pinta un figura cerrada con un color y/o patrón
'--------------------------------------------------------------------
 DefInt A-Z
 Option Explicit

'Patrones de llenado:
'vbFSSolid          0   Sólido
'vbFSTransparent    1   Transparente
'vbHorizontalLine   2   Línea horizontal
'vbVerticalLine     3   Línea vertical
'vbUpwardDiagonal   4   Diagonal hacia arriba
'vbDownwardDiagonal 5   Diagonal hacia abajo
'vbCross            6   Cruzado
'vbDiagonalCross    7   Cruzado diagonal

'Windows API Function used by Paint procedure (Private para un Form):

 Private Declare Function FloodFill Lib "GDI32" _
         ( _
         ByVal hDC, ByVal x, ByVal y, ByVal crColor As Long _
         )


'--------------------------------------------------------------------------
' Basado en FloodFill API function
' Los parámetros x e y deben ser un punto dentro de la figura cerrada
' Harvey T, Petrosoft
'--------------------------------------------------------------------------
Public Sub Paint(P As PictureBox, x, y, FillClr As Long, Optional FillStyle As Variant)

    If IsMissing(FillStyle) Then
       P.FillStyle = vbFSSolid
    Else
       P.FillStyle = Int(FillStyle)
    End If
    P.FillColor = FillClr
    
    If FloodFill(P.hDC, x, y, P.ForeColor) = 0 Then
       MsgBox "Error Sub Paint..."
    End If
End Sub


'----------------------------------------------------------------------
' Ejemplo sencillo, código en Form1 (con un PictureBox)
'----------------------------------------------------------------------
Private Sub Picture1_Paint()
    
    Me.ScaleMode = vbPixels
    Picture1.ScaleMode = vbPixels
    
   'Figura de muestra
    Picture1.Width = 200
    Picture1.Height = 200
    Picture1.Line (0, 100)-(100, 100)
    Picture1.Line -Step(-50, -50)
    Picture1.Line -Step(-50, 50)
    
   'Relleno con color
    Paint Picture1, 60, 90, vbYellow
End Sub

Harvey Triana Envíe sus comentarios a: psoft@latino.net.co
Derechos libres de reutilización solo para programación.