RE:Pintar en un Picture Box
Utiliza el API ExtFloodFill de la siguiente forma:
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 Sub Pintar(color As Double, enX as Single, Y As Single)
Picture1.FillColor = color
ExtFloodFill Picture1.hdc, enX, enY, Picture1.Point(enX, enY), 1
'Picture1.Point(enX, enY) te da el color del punto que va a sustituir hasta que encuentre otro color, es como pintar con el Paint de Windows
End Sub
'Luego puedes llamar desde un evento MouseDown para pintar a partir de donde haces click
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call Pintar(RGB(0,0,0), X, Y)
End Sub
'Pero si ya tienes la figura fija puedes llamarlo así: Call Pintar(RGB(0,0,0), 5, 5), por ejemplo.
'Fin de código
Ah, pero para que te respete el llenado no, repito NO debes utilizar el control Line ni el control Shape, en su lugar puedes escribir
Picture1.Pset(X, Y), Color
Picture1.Line(X1, Y1)-(X2, Y2), Color
Espero te sirva