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 b As Byte
+
  Private c As Short
 
   
 
   
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
    
+
   With Timer1
+
   Me.Show
  <FONT Color=gray>' ''Ogni centesimo di secondo si attiva il "Timer" per andare a vedere l'orario del sistema:''</font>
+
     .Delay = 100
+
   Do
     .Start
+
  <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>
   End With
+
     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 c, d As Float
+
   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>
   c = (b - 90)
+
   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(c))), y + (r * Sin(Rad(c))))
+
     .LineTo(x + (r * Cos(Rad(f))), y + (r * Sin(Rad(f))))
 
     .Stroke
 
     .Stroke
 
     .End
 
     .End
 
   End With
 
   End With
 
 
'''End'''
 
 
   
 
   
'''Public''' Sub Timer1_Timer()
 
 
 
<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>
 
  n = Second(Time) * 6
 
 
 
  DrawingArea1.Refresh
 
 
 
 
  '''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