Disegnare un orologio su una DrawingArea prendendo l'orario del sistema

Da Gambas-it.org - Wikipedia.
Versione del 26 mar 2021 alle 19:08 di Vuott (Discussione | contributi) (Creata pagina con "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 d...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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 n As Single

Public Sub Form_Open()
 
 With Timer1
' Ogni centesimo di secondo si attiva il "Timer" per andare a vedere l'orario del sistema:
   .Delay = 100
   .Start
 End With
 
End

Public Sub DrawingArea1_Draw()
 
 Dim x, y, r As Short
 Dim c, 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:
 c = (n - 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(c))), y + (r * Sin(Rad(c))))
   .Stroke
   .End
 End With
  
End

Public Sub Timer1_Timer()
 
' Ottiene il valore del secondo corrente e lo moltiplica per 6.0, al fine di ottenere la correlazione fra gradi e secondi sull'orologio grafico virtuale:
 n = CSingle(Format(Time, "ss")) * 6.0
 
 DrawingArea1.Refresh
  
End