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, che segna soltanto i secondi, 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, che segna soltanto i secondi, prendendo come riferimento l'orario del sistema.
 +
Private DrawingArea1 As DrawingArea
 
  Private c As Short
 
  Private c As Short
 
   
 
   
  '''Public''' Sub Form_Open()
+
   
 +
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
 
   Me.Show
Riga 9: Riga 24:
 
  <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>
 
  <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
 
     c = Second(Time) * 6
     DrawingArea1.Refresh
+
     If Object.IsValid(DrawingArea1) Then DrawingArea1.Refresh
 
  <FONT Color=gray>' ''L'uso dell'istruzione "Wait" consente di operare sugli Oggetti grafici eventualmente posti sul "Form":''</font>
 
  <FONT Color=gray>' ''L'uso dell'istruzione "Wait" consente di operare sugli Oggetti grafici eventualmente posti sul "Form":''</font>
 
     Wait 0.01
 
     Wait 0.01
 
   Loop
 
   Loop
 
   
 
   
  '''End'''
+
  End
 
   
 
   
  '''Public''' Sub DrawingArea1_Draw()
+
  Public Sub DrawingArea1_Draw()
 
   
 
   
 
   Dim x, y, r As Short
 
   Dim x, y, r As Short
Riga 41: Riga 56:
 
   End With
 
   End With
 
   
 
   
  '''End'''
+
  End

Versione delle 17:36, 9 mag 2023

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