Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/04/2013, 10:49
truskyvb
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 7 meses
Puntos: 3
Rellenar región de color

Hola, estoy tratando de rellenar de color a “bote” una lámina en blanco y negro por regiones, y todo va bien salvo que si pincho encima de las líneas del dibujo, también las considera una región y les cambia el color. ¿Se puede evitar?

Gracias por adelantado.

El código que utilizo es el siguiente:

‘ La lámina en blanco y negro va en el fondo del formulario


Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
Private Declare Function ExtFloodFill Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Const FLOODFILLBORDER = 0
Private Const FLOODFILLSURFACE = 1
Private Type POINTAPI
X As Long
Y As Long
End Type


Private Sub Command1_Click()
CommonDialog1.Color = &H80FF&
End Sub


Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
brush = CreateSolidBrush(CommonDialog1.Color)
SelectObject Me.hdc, brush
ExtFloodFill Me.hdc, X, Y, Me.Point(X, Y), FLOODFILLSURFACE
DeleteObject brush
End Sub

'----------
Edito para añadir que lo consigo "a pedal". Hago el formulario con las líneas del dibujo transparentes con VBShpedForm y pongo detrás del formulario otro negro, pero como digo, es "a pedal", trabajo de chinos (es un dicho para que nadie se ofenda).
Gracias y un saludo

Última edición por truskyvb; 13/04/2013 a las 15:58