Ruotare un rombo in una DrawingArea: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 1: | Riga 1: | ||
Di seguito mostreremo un possibile codice per ruotare un Rombo disegnato in una ''DrawingArea''. | Di seguito mostreremo un possibile codice per ruotare un Rombo disegnato in una ''DrawingArea''. | ||
Private DrawingArea1 As DrawingArea | |||
Private Tmr As Timer | Private Tmr As Timer | ||
Private Const ScalaRaggio As Float = 0.2 <FONT Color=gray>' ''Scala del raggio (dimensione del Rombo)''</font> | Private Const ScalaRaggio As Float = 0.2 <FONT Color=gray>' ''Scala del raggio (dimensione del Rombo)''</font> | ||
Versione attuale delle 18:48, 10 ago 2025
Di seguito mostreremo un possibile codice per ruotare un Rombo disegnato in una DrawingArea.
Private DrawingArea1 As DrawingArea Private Tmr As Timer Private Const ScalaRaggio As Float = 0.2 ' Scala del raggio (dimensione del Rombo) Private Rotazione As Float ' Angolo di rotazione in radianti Public Sub Form_Open() With Me .Move(0, 0, Screen.AvailableWidth, Screen.AvailableHeight) .Arrangement = Arrange.Fill End With With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" .Background = Color.Lighter(Color.Yellow) End With Tmr = New Timer As "Tmr" Tmr.Delay = 30 ' circa 33 FPS Tmr.Start() End Public Sub DrawingArea1_Draw() Dim cx As Float = DrawingArea1.W / 2 Dim cy As Float = DrawingArea1.H / 2 Dim w As Float = DrawingArea1.W * 0.4 Dim h As Float = DrawingArea1.H * 0.3 Dim r As Float = 5 Dim points As New PointF[4] Dim i As Integer Dim basePoints As New PointF[4] basePoints[0] = New PointF(0, -h / 2) basePoints[1] = New PointF(w / 2, 0) basePoints[2] = New PointF(0, h / 2) basePoints[3] = New PointF(-w / 2, 0) For i = 0 To 3 Dim xRot As Float = basePoints[i].X * Cos(Rotazione) - basePoints[i].Y * Sin(Rotazione) Dim yRot As Float = basePoints[i].X * Sin(Rotazione) + basePoints[i].Y * Cos(Rotazione) points[i] = New PointF(cx + xRot, cy + yRot) Next With Paint ' Disegna il rombo: .Brush = Paint.Color(Color.Black) .LineWidth = 2 .MoveTo(points[0].X, points[0].Y) For i = 1 To 3 .LineTo(points[i].X, points[i].Y) Next .LineTo(points[0].X, points[0].Y) .Stroke ' Disegna il punto nero al centro: .Ellipse(cx - r, cy - r, 2 * r, 2 * r) .Fill End With End