Ya sé que el mensaje tiene un mes. Pero como me gusta el dibujo con Gambas y me atrae el tema.
Lo tengo un poco oxidado, no pude evitarlo.
Tincho:
Creo que la línea :
Código:
Debería ser.
[code]
Se podría hacer con un único array:
[code]
Private afPoints As New Integer[]
Public Sub DrawingArea1_Draw()
Dim z As Integer
If afPoints.Count > 0 Then
Paint.Brush = Paint.Color(Color.Red)
Paint.LineWidth = 3
For z = 0 To afPoints.Max - 2 Step 4
Paint.MoveTo(afPoints[z], afPoints[z + 1])
Paint.LineTo(afPoints[z + 2], afPoints[z + 3])
Paint.Stroke
Next
Endif
End
Public Sub ToolButton1_Click()
afPoints.Insert([10, 100])
afPoints.Insert([60, 10])
afPoints.Insert([60, 10])
afPoints.Insert([110, 100])
afPoints.Insert([40, 50])
afPoints.Insert([80, 50])
DrawingArea1.Refresh
End
Aunque puede que la manera más correcta es cerrar una ruta y crear otra. Como ha demostrado Cogier en su ejemplo.
Para que el punto sea desplazado a otra coordenada, la línea horizontal.
Dibujar las letras no es lo más recomendable, cuando podemos dibujar las letras con una fuente determinada.
Como ejemplo no está mal ya que refuerza el uso de bucles. El número que resta al último elemento del array y el del salto en el step es clave.
Se puede usar una colección por cada letra. Pero desde luego puede parecer algo raro, tanto número.
Código:
Private afPoints As New Integer[]
Private cletras As Collection = [
"A": [10, 100, 60, 10, 60, 10, 110, 100, 40, 50, 80, 50],
"E": [10, 100, 10, 10, 10, 10, 110, 10, 10, 50, 80, 50, 10, 100, 110, 100]]
Public Sub DrawingArea1_Draw()
Dim z As Integer
If afPoints.Count > 0 Then
Paint.Brush = Paint.Color(Color.Red)
Paint.LineWidth = 3
For z = 0 To afPoints.Max - 2 Step 4
Paint.MoveTo(afPoints[z], afPoints[z + 1])
Paint.LineTo(afPoints[z + 2], afPoints[z + 3])
Paint.Stroke
Next
Endif
End
Public Sub ToolButton1_Click()
'afPoints = cletras["A"]
afPoints = cletras["E"]
DrawingArea1.Refresh
End
Saludos