Disegnare in una DrawingArea un triangolo
Vai alla navigazione
Vai alla ricerca
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 vertix As New Short[]
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 vertix As New Short[]
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