Ruotare un triangolo in una DrawingArea: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
(Creata pagina con "Mostriamo un possibile codice per far ruotare su se stesso, e più specificatamente <SPAN Style="text-decoration:underline">intorno al proprio ''[https://it.wikipedia.org/wiki...") |
Nessun oggetto della modifica |
||
| Riga 1: | Riga 1: | ||
Mostriamo un possibile codice per far ruotare su se stesso, e più specificatamente <SPAN Style="text-decoration:underline">intorno al proprio ''[https://it.wikipedia.org/wiki/Baricentro_(geometria) Baricentro]</span>, un triangolo disegnato su una ''DrawingArea''. <SUP>[[[#Note|Nota 1]]]</sup> | Mostriamo un possibile codice per far ruotare su se stesso, e più specificatamente <SPAN Style="text-decoration:underline">intorno al proprio ''[https://it.wikipedia.org/wiki/Baricentro_(geometria) Baricentro]''</span>, un triangolo disegnato su una ''DrawingArea''. <SUP>[[[#Note|Nota 1]]]</sup> | ||
<BR>La rotazione del triangolo viene effettuata premendo i tasti freccia in su e freccia in giù della tastiera oppure ruotando la rotellina del mouse. | <BR>La rotazione del triangolo viene effettuata premendo i tasti freccia in su e freccia in giù della tastiera oppure ruotando la rotellina del mouse. | ||
<BR>Il fulcro del Metodo ".Translate()" agisce da vortice, ossia da centro di rotazione intorno a una ipotetica circonferenza. | <BR>Il fulcro del Metodo ".Translate()" agisce da vortice, ossia da centro di rotazione intorno a una ipotetica circonferenza. | ||
Versione delle 19:31, 1 gen 2022
Mostriamo un possibile codice per far ruotare su se stesso, e più specificatamente intorno al proprio Baricentro, un triangolo disegnato su una DrawingArea. [Nota 1]
La rotazione del triangolo viene effettuata premendo i tasti freccia in su e freccia in giù della tastiera oppure ruotando la rotellina del mouse.
Il fulcro del Metodo ".Translate()" agisce da vortice, ossia da centro di rotazione intorno a una ipotetica circonferenza.
Private DrawingArea1 As DrawingArea
' Imposta le coordinate dei tre vertici del triangolo, con il primo vertice nel punto di rotazione (0, 0):
Private ABC As Single[] = [0, 0, 200, 0, 100, 300]
' Calcoli per ottenere il "Baricentro" del triangolo:
Private xg As Single = (ABC[0] + ABC[2] + ABC[4]) / 3
Private yg As Single = (ABC[1] + ABC[3] + ABC[5]) / 3
' Memorizza i gradi dell'angolo:
Private ang As Float
Public Sub Form_Open()
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_Draw()
Dim c As Integer[] = [Color.Blue, Color.Green, Color.Yellow, Color.Red]
Dim f As Float[] = [0, 0.34, 0.67, 1]
With Paint
.Brush = .LinearGradient(0, 20, 15, 0, c, f)
' Imposta il fulcro/punto della rotazione - ad esempio - al centro dell'area di disegno:
.Translate(DrawingArea1.W / 2, DrawingArea1.H / 2)
.Rotate(Rad(ang))
.LineWidth = 2.0
' Disegna il Triangolo.
' Siccome l'angolo ruota su se stesso, avendo come centro di rotazione il proprio "Baricentro", ad ogni coordinata del punto, che costituisce un elemento del vettore del Metodo ".Polygon", si sottrae il valore della corrispondente coordinata del punto del Baricentro. In questo modo si farà coincidere l'angolo di rotazione con il "Baricentro" del Triangolo.
' Non si devono modificare i valori né i segni dei quattro argomenti qui riportati.
.Polygon([ABC[0] - xg, ABC[1] - yg, ABC[2] - xg, ABC[3] - yg, ABC[4] - xg, ABC[5] - yg])
.Stroke
.End
End With
End
Public Sub Form_KeyPress()
Select Case Key.Code
Case Key.Up
ang += 1
If ang = 361 Then ang = 1
Case Key.Down
ang -= 1
If ang = -361 Then ang = -1
End Select
DrawingArea1.Refresh
End
Public Sub Form_MouseWheel()
ang += Mouse.Delta
Select Case ang
Case 361
ang = 1
Case -361
ang = -1
End Select
DrawingArea1.Refresh
End
Public Sub Form_Resize() ' Con questo evento se cambia la dimensione del Form, il disegna non va perso.
DrawingArea1.Refresh
End
Note
[1] Vedere anche queste pagine: