Visual Basic - Pintar en un Picture Box

Life is soft - evento anual de software empresarial
 
Vista:

Pintar en un Picture Box

Publicado por PPU (8 intervenciones) el 21/03/2001 20:38:01
Si yo hago un cuadrado o un poligono con el método Line, como le digo yo que esa region que esta delimitada, la pinte de un color u otro.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pintar en un Picture Box

Publicado por Angel Pacheco (6 intervenciones) el 21/03/2001 21:12:16
Que yo sepa, Visual no puede por sí solo determinar los límites de un control Line.
Lo que te recomiendo es usar código. Determina las coordenadas en Twips del área de tu polígono y utiliza Pset para pintar cada twip del interior de tu polígono, si es cuadrado es cosa fácil, basta con usar dos ciclos for y dentro de ellos el pset. Sin embargo, con un polígono, la cosa se complica un poco por que debes calcular las twips por los que cruza cada línea de tu polígono.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pintar en un Picture Box

Publicado por Adán (39 intervenciones) el 23/03/2001 04:35:19
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar