Differenze tra le versioni di "Disegnare in una DrawingArea un triangolo"
Da Gambas-it.org - Wikipedia.
(6 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | + | Per disegnare in una DrawingArea un singolo "Triangolo", <U>impostando i suoi vertici con il clic del mouse</u>, sono possibili almeno un paio di modalità. | |
+ | |||
+ | ===Usando i Metodi ".MoveTo()" e ".LineTo()" della Classe "Paint"=== | ||
+ | Con questa modalità i lati del triangolo saranno disegnati dalle linee create dai Metodi ".MoveTo()" e ".LineTo()" della Classe "Paint". | ||
+ | Private DrawingArea1 As DrawingArea | ||
Private vertix As New Short[] | Private vertix As New Short[] | ||
+ | Public Sub _new() | ||
+ | |||
+ | With Me | ||
+ | .W = Screen.AvailableWidth | ||
+ | .H = Screen.AvailableHeight | ||
+ | .Arrangement = Arrange.Fill | ||
+ | End With | ||
+ | With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" | ||
+ | .Background = Color.White | ||
+ | End With | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Public Sub DrawingArea1_MouseUp() | ||
+ | |||
+ | <FONT Color=gray>' ''Consente di disegnare un nuovo triangolo:''</font> | ||
+ | If vertix.Count == 6 Then vertix = New Short[] | ||
+ | |||
+ | vertix.Push(Mouse.X) | ||
+ | vertix.Push(Mouse.Y) | ||
+ | |||
+ | DrawingArea1.Refresh | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Public Sub DrawingArea1_Draw() | ||
− | |||
− | |||
− | |||
− | |||
If vertix.Count == 0 Then Return | If vertix.Count == 0 Then Return | ||
− | + | ||
With Paint | With Paint | ||
<FONT Color=gray>' ''Disegna un punto sul primo clic con il puntatore del mouse:''</font> | <FONT Color=gray>' ''Disegna un punto sul primo clic con il puntatore del mouse:''</font> | ||
.Arc(vertix[0], vertix[1], 1, Rad(0), Rad(360)) | .Arc(vertix[0], vertix[1], 1, Rad(0), Rad(360)) | ||
− | . | + | .Fill |
If vertix.Count < 4 Then | If vertix.Count < 4 Then | ||
.End | .End | ||
Riga 18: | Riga 46: | ||
Endif | Endif | ||
<FONT Color=gray>' ''Se il vettore "vertix" ha almeno 4 elementi, è possibile disegnare il primo lato:''</font> | <FONT Color=gray>' ''Se il vettore "vertix" ha almeno 4 elementi, è possibile disegnare il primo lato:''</font> | ||
− | .MoveTo(vertix[0], vertix[1]) | + | <FONT Color=#B22222>.MoveTo</font>(vertix[0], vertix[1]) |
− | .LineTo(vertix[2], vertix[3]) | + | <FONT Color=#B22222>.LineTo</font>(vertix[2], vertix[3]) |
If vertix.Count == 6 Then | If vertix.Count == 6 Then | ||
<FONT Color=gray>' ''Se il vettore "vertix" ha 6 elementi, è possibile disegnare il secondo e il terzo lato:''</font> | <FONT Color=gray>' ''Se il vettore "vertix" ha 6 elementi, è possibile disegnare il secondo e il terzo lato:''</font> | ||
− | .LineTo(vertix[4], vertix[5]) | + | <FONT Color=#B22222>.LineTo</font>(vertix[4], vertix[5]) |
− | .LineTo(vertix[0], vertix[1]) | + | <FONT Color=#B22222>.LineTo</font>(vertix[0], vertix[1]) |
Endif | Endif | ||
− | .Stroke <FONT Color=gray>' ''Se si preferisce un triangolo "pieno", usare il Metodo "'''.Fill'''" | + | .Stroke <FONT Color=gray>' ''Se si preferisce un triangolo "pieno", usare il Metodo "'''.Fill'''"''</font> |
.End | .End | ||
End With | End With | ||
− | + | ||
− | + | End | |
+ | |||
+ | ===Usando il Metodo ".Polygon()" della Classe "Paint"=== | ||
+ | In quest'altra modalità - più breve della precedente - i punti impostati con il mouse saranno passati come array al Metodo ".Polygon()" della Classe "Paint" per disegnare il triangolo prescelto. | ||
+ | Private DrawingArea1 As DrawingArea | ||
+ | Private vertix As New Short[] | ||
− | + | Public Sub _new() | |
+ | |||
+ | With Me | ||
+ | .W = Screen.AvailableWidth | ||
+ | .H = Screen.AvailableHeight | ||
+ | .Arrangement = Arrange.Fill | ||
+ | End With | ||
+ | With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" | ||
+ | .Background = Color.White | ||
+ | End With | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Public Sub DrawingArea1_MouseUp() | ||
<FONT Color=gray>' ''Consente di disegnare un nuovo triangolo:''</font> | <FONT Color=gray>' ''Consente di disegnare un nuovo triangolo:''</font> | ||
If vertix.Count == 6 Then vertix = New Short[] | If vertix.Count == 6 Then vertix = New Short[] | ||
− | + | ||
vertix.Push(Mouse.X) | vertix.Push(Mouse.X) | ||
vertix.Push(Mouse.Y) | vertix.Push(Mouse.Y) | ||
− | + | ||
DrawingArea1.Refresh | DrawingArea1.Refresh | ||
− | ''' | + | End |
+ | |||
+ | |||
+ | Public Sub DrawingArea1_Draw() | ||
+ | |||
+ | If vertix.Count == 0 Then Return | ||
+ | |||
+ | Dim b As Byte | ||
+ | |||
+ | With Paint | ||
+ | <FONT Color=gray>' ''Disegna in sequenza un punto per ciascun vertice impostato del triangolo:''</font> | ||
+ | For b = 0 To vertix.Max Step 2 | ||
+ | .Arc(vertix[b], vertix[b + 1], 1, Rad(0), Rad(360)) | ||
+ | .Fill | ||
+ | Next | ||
+ | If vertix.Count == 6 Then | ||
+ | <FONT Color=#B22222>.Polygon</font>(vertix) | ||
+ | .Stroke <FONT Color=gray>' ''Se si preferisce un triangolo "pieno", usare il Metodo ".Fill"''</font> | ||
+ | Endif | ||
+ | .End | ||
+ | End With | ||
+ | |||
+ | End |
Versione attuale delle 10:55, 18 nov 2024
Per disegnare in una DrawingArea un singolo "Triangolo", impostando i suoi vertici con il clic del mouse, sono possibili almeno un paio di modalità.
Usando i Metodi ".MoveTo()" e ".LineTo()" della Classe "Paint"
Con questa modalità i lati del triangolo saranno disegnati dalle linee create dai Metodi ".MoveTo()" e ".LineTo()" della Classe "Paint".
Private DrawingArea1 As DrawingArea Private vertix As New Short[] Public Sub _new() With Me .W = Screen.AvailableWidth .H = Screen.AvailableHeight .Arrangement = Arrange.Fill End With With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" .Background = Color.White End With End Public Sub DrawingArea1_MouseUp() ' Consente di disegnare un nuovo triangolo: If vertix.Count == 6 Then vertix = New Short[] vertix.Push(Mouse.X) vertix.Push(Mouse.Y) DrawingArea1.Refresh End Public Sub DrawingArea1_Draw() If vertix.Count == 0 Then Return With Paint ' Disegna un punto sul primo clic con il puntatore del mouse: .Arc(vertix[0], vertix[1], 1, Rad(0), Rad(360)) .Fill If vertix.Count < 4 Then .End Return Endif ' Se il vettore "vertix" ha almeno 4 elementi, è possibile disegnare il primo lato: .MoveTo(vertix[0], vertix[1]) .LineTo(vertix[2], vertix[3]) If vertix.Count == 6 Then ' Se il vettore "vertix" ha 6 elementi, è possibile disegnare il secondo e il terzo lato: .LineTo(vertix[4], vertix[5]) .LineTo(vertix[0], vertix[1]) Endif .Stroke ' Se si preferisce un triangolo "pieno", usare il Metodo ".Fill" .End End With End
Usando il Metodo ".Polygon()" della Classe "Paint"
In quest'altra modalità - più breve della precedente - i punti impostati con il mouse saranno passati come array al Metodo ".Polygon()" della Classe "Paint" per disegnare il triangolo prescelto.
Private DrawingArea1 As DrawingArea Private vertix As New Short[] Public Sub _new() With Me .W = Screen.AvailableWidth .H = Screen.AvailableHeight .Arrangement = Arrange.Fill End With With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" .Background = Color.White End With End Public Sub DrawingArea1_MouseUp() ' Consente di disegnare un nuovo triangolo: If vertix.Count == 6 Then vertix = New Short[] vertix.Push(Mouse.X) vertix.Push(Mouse.Y) DrawingArea1.Refresh End Public Sub DrawingArea1_Draw() If vertix.Count == 0 Then Return Dim b As Byte With Paint ' Disegna in sequenza un punto per ciascun vertice impostato del triangolo: For b = 0 To vertix.Max Step 2 .Arc(vertix[b], vertix[b + 1], 1, Rad(0), Rad(360)) .Fill Next If vertix.Count == 6 Then .Polygon(vertix) .Stroke ' Se si preferisce un triangolo "pieno", usare il Metodo ".Fill" Endif .End End With End