Disegnare in una DrawingArea linee mediante codice

Da Gambas-it.org - Wikipedia.

La definizione di una linea è costituita da due punti di riferimento: quello iniziale (di origine) e quello finale.

Per disegnare in una DrawingArea linee mediante il codice, si utilizza il Metodo ".LineTo()" della Classe Paint. Per ottenere il disegno è necessario usare poi anche il Metodo ".Stroke".

Il Metodo ".LineTo()" possiede due parametri che rappresentano le coordinate del punto finale della linea.
Il punto d'origine, invece, è predefinito ed è pari a x=0, y=0, se il Metodo ".LineTo()" è all'inizio della funzione Paint (ossia se non è preceduto da altro Metodo ".LineTo()" o dal Metodo ".MoveTo()".
Così questo codice:

Public Sub DrawingArea1_Draw()
 
 With Paint
   .LineTo(200, 100)
   .Stroke
   .End
 End With
 
End

disegnerà nella DrawingArea una linea che ha come punto di origine le coordinate x=0, y=0, e come punto finale le coordinate impostate nel Metodo ".LineTo()".


Impostare il punto iniziale di una linea da coordinate diverse da 0,0

Se si intende far impostare il punto di origine di una linea in coordinate diverse da quelle predefinite 0,0, è necessario premettere il Metodo ".MoveTo()" al Metodo ".LineTo()".
Così questo codice:

Public Sub DrawingArea1_Draw()
 
 With Paint
   .MoveTo(20, 40)
   .LineTo(200, 100)
   .Stroke
   .End
 End With
 
End

disegnerà nella DrawingArea una linea che ha come punto di origine le coordinate x=20, y=40, e come punto finale le coordinate impostate nel successivo Metodo ".LineTo()".


Disegnare più linee a formare un'unica linea spezzata

Per disegnare più linee a formare un'unica linea spezzata, bisognerà combinare adeguatamente i già visti Metodi ".MoveTo()" e ".LineTo()".
Va sottolineato che, quando si utilizzano due o più Metodi ".LineTo()", il punto di origine di ciascuna linea, che sarà disegnata da ogni Metodo ".LineTo()" a cominciare dal secondo in poi, ha le sue coordinate d'origine nel punto finale della linea precedente.
Così questo codice:

Public Sub DrawingArea1_Draw()
 
 With Paint
   .MoveTo(20, 40)
   .LineTo(200, 100)
   .LineTo(10, 150)
   .LineTo(100, 200)
   .Stroke
   .End
 End With

End

prevede il disegno di tre linee. In particolare:
- il punto d'origine della prima linea è impostato alle coordinate fissate nel Metodo ".MoveTo()";
- il punto finale della prima linea è impostato alle coordinate fissate nel primo Metodo ".LineTo()";
- il punto d'origine della seconda linea è impostato alle medesime coordinate del punto finale della prima linea (quindi comincerà esattamente dove è terminata la prima linea);
- il punto finale della seconda linea è impostato alle coordinate fissate nel secondo Metodo ".LineTo()";
- il punto d'origine della terza linea è impostato alle medesime coordinate del punto finale della seconda linea (quindi comincerà esattamente dove è terminata la seconda linea);
- il punto finale della terza linea è impostato alle coordinate fissate nel terzo Metodo ".LineTo()";


Interporre il Metodo ".MoveTo()" fra due Metodi ".LineTo()"

E' ovvio che, ponendo fra i due Metodi ".LineTo()", un Metodo ".MoveTo()", si possono ottenere due linee disgiunte e separate.
Esempio pratico:

Public Sub DrawingArea1_Draw()
 
 With Paint
   .MoveTo(20, 40)
   .LineTo(200, 100)
   .MoveTo(150, 40)
   .LineTo(10, 150)
   .LineTo(100, 200)
   .Stroke
   .End
 End With

End