Disegnare un orologio su una DrawingArea prendendo l'orario del sistema
Da Gambas-it.org - Wikipedia.
Versione del 9 mag 2023 alle 17:36 di Vuott (Discussione | contributi)
Il codice, che segue, mostra come disegnare su una DrawingArea con la Classe Paint un essenziale orologio circolare con lancetta, che segna soltanto i secondi, prendendo come riferimento l'orario del sistema.
Private DrawingArea1 As DrawingArea Private c As 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.SoftYellow End With End Public Sub Form_Open() Me.Show Do ' Ottiene il valore del secondo corrente e lo moltiplica per 6, al fine di ottenere la correlazione fra gradi e secondi sull'orologio grafico virtuale: c = Second(Time) * 6 If Object.IsValid(DrawingArea1) Then DrawingArea1.Refresh ' L'uso dell'istruzione "Wait" consente di operare sugli Oggetti grafici eventualmente posti sul "Form": Wait 0.01 Loop End Public Sub DrawingArea1_Draw() Dim x, y, r As Short Dim f, d As Float x = DrawingArea1.W * 0.5 y = DrawingArea1.H * 0.5 ' Imposta la dimensione del raggio del cerchio, ossia della lancetta dell'orologio: r = 60 ' Imposta il punto sulla circonferenza dove è posto il secondo n. 0, ossia il grado da dove avrà inizio a ruotare la lancetta: f = (c - 90) d = 2 With Paint .Brush = .Color(Color.Red) .Ellipse(x - 2, y - 2, 4, 4, 0, 360, False) .Ellipse(x - ((r * d) / 2), y - ((r * d) / 2), r * d, r * d, 0, 360, False) .Stroke .Brush = .Color(Color.Blue) .MoveTo(x, y) .LineTo(x + (r * Cos(Rad(f))), y + (r * Sin(Rad(f)))) .Stroke .End End With End