Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Rellenar región de color

Estas en el tema de Rellenar región de color en el foro de Visual Basic clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 13/04/2013, 10:49
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 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
  #2 (permalink)  
Antiguo 15/04/2013, 06:43
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Rellenar región de color

He dado con una solución. La pongo por si le sirve a alguien.
Si teneis alguna idea mejor, os lo agradezco.

Detectar el color del pixcel sobre el que te mueves y a partir de ahí, poner una condiciíon.


Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Picture2.BackColor = &H0& Then 'Color negro
Else
brush = CreateSolidBrush(CommonDialog1.Color)
SelectObject Me.hdc, brush
ExtFloodFill Me.hdc, X, Y, Me.Point(X, Y), FLOODFILLSURFACE
DeleteObject brush
End If
End Sub

'Para detectar el color del pixel
Private Sub form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Detecta el color del Pixel sobre el que estoy y pasa _
el valor al BackColor del Picture2
Dim Color As Long
Picture2.BackColor = Color
End Sub


Gracias y un saludo

Etiquetas: color, rellenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:40.