Differenze tra le versioni di "Disegnare un orologio su una DrawingArea prendendo l'orario del sistema"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
Il codice, che segue, mostra come disegnare su una ''DrawingArea'' con la Classe ''Paint'' un essenziale orologio circolare con lancetta, prendendo come riferimento l'orario del sistema. | Il codice, che segue, mostra come disegnare su una ''DrawingArea'' con la Classe ''Paint'' un essenziale orologio circolare con lancetta, prendendo come riferimento l'orario del sistema. | ||
− | Private | + | Private c As Short |
'''Public''' Sub Form_Open() | '''Public''' Sub Form_Open() | ||
− | + | ||
− | + | Me.Show | |
− | <FONT Color=gray>' '' | + | |
− | . | + | Do |
− | . | + | <FONT Color=gray>' ''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:''</font> |
− | + | c = Second(Time) * 6 | |
− | + | DrawingArea1.Refresh | |
+ | <FONT Color=gray>' ''L'uso dell'istruzione "Wait" consente di operare sugli Oggetti grafici eventualmente posti sul "Form":''</font> | ||
+ | Wait 0.01 | ||
+ | Loop | ||
+ | |||
'''End''' | '''End''' | ||
'''Public''' Sub DrawingArea1_Draw() | '''Public''' Sub DrawingArea1_Draw() | ||
− | + | ||
Dim x, y, r As Short | Dim x, y, r As Short | ||
− | Dim | + | Dim f, d As Float |
− | + | ||
x = DrawingArea1.W * 0.5 | x = DrawingArea1.W * 0.5 | ||
y = DrawingArea1.H * 0.5 | y = DrawingArea1.H * 0.5 | ||
Riga 22: | Riga 26: | ||
r = 60 | r = 60 | ||
<FONT Color=gray>' ''Imposta il punto sulla circonferenza dove è posto il secondo n. 0, ossia il grado da dove avrà inizio a ruotare la lancetta:''</font> | <FONT Color=gray>' ''Imposta il punto sulla circonferenza dove è posto il secondo n. 0, ossia il grado da dove avrà inizio a ruotare la lancetta:''</font> | ||
− | + | f = (c - 90) | |
d = 2 | d = 2 | ||
− | + | ||
With Paint | With Paint | ||
.Brush = .Color(Color.Red) | .Brush = .Color(Color.Red) | ||
Riga 32: | Riga 36: | ||
.Brush = .Color(Color.Blue) | .Brush = .Color(Color.Blue) | ||
.MoveTo(x, y) | .MoveTo(x, y) | ||
− | .LineTo(x + (r * Cos(Rad( | + | .LineTo(x + (r * Cos(Rad(f))), y + (r * Sin(Rad(f)))) |
.Stroke | .Stroke | ||
.End | .End | ||
End With | End With | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
'''End''' | '''End''' |
Versione delle 18:15, 2 gen 2022
Il codice, che segue, mostra come disegnare su una DrawingArea con la Classe Paint un essenziale orologio circolare con lancetta, prendendo come riferimento l'orario del sistema.
Private c As Short 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 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