Colorear/rellenar imagenes cargada a un picturebox
Publicado por Juan Ricardo Cogollo Oyola (1 intervención) el 23/12/2008 07:34:47
Hola Programadores.
Necesito impelmentar e visual basic algo parecido a la herramienta de relleno de color del tradicional paint, pero no solo para figuras como circulos y triagulos si no para imagenes o croquis de mapas paar colorear.
aqui muestro algo de codigo de lo que llevo :
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 Sub Command2_Click()
On Error GoTo ClrError
CommonDialog1.CancelError = True
CommonDialog1.ShowColor
Exit Sub
ClrError:
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
' create solid brush object
brush = CreateSolidBrush(CommonDialog1.Color)
' select it into the current device context
SelectObject Picture1.hdc, brush
' fill area with selected brush
ExtFloodFill Picture1.hdc, x, y, Picture1.point(x, y), FLOODFILLSURFACE
' brush object no longer needed, delete it
DeleteObject brush
End Sub
nota: lo anterior me funciona como quiero pero solo cuando cargo la imagen como fondo del form, en este caso la tengo en el picture box y alli no me funciona.
Necesito impelmentar e visual basic algo parecido a la herramienta de relleno de color del tradicional paint, pero no solo para figuras como circulos y triagulos si no para imagenes o croquis de mapas paar colorear.
aqui muestro algo de codigo de lo que llevo :
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 Sub Command2_Click()
On Error GoTo ClrError
CommonDialog1.CancelError = True
CommonDialog1.ShowColor
Exit Sub
ClrError:
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
' create solid brush object
brush = CreateSolidBrush(CommonDialog1.Color)
' select it into the current device context
SelectObject Picture1.hdc, brush
' fill area with selected brush
ExtFloodFill Picture1.hdc, x, y, Picture1.point(x, y), FLOODFILLSURFACE
' brush object no longer needed, delete it
DeleteObject brush
End Sub
nota: lo anterior me funciona como quiero pero solo cuando cargo la imagen como fondo del form, en este caso la tengo en el picture box y alli no me funciona.
Valora esta pregunta


0