68 lines
2.1 KiB
QBasic
68 lines
2.1 KiB
QBasic
B4A=true
|
|
Group=Default Group
|
|
ModulesStructureVersion=1
|
|
Type=Class
|
|
Version=13
|
|
@EndOfDesignText@
|
|
Sub Class_Globals
|
|
Private pnlClock As Panel ' Pannello in cui disegnare l'orologio
|
|
Private cvsClock As Canvas ' Canvas per disegnare l'orologio
|
|
Private clockDiameter As Float ' Diametro dell'orologio (in pixel)
|
|
Private centerX As Float ' Coordinata X del centro dell'orologio
|
|
Private centerY As Float ' Coordinata Y del centro dell'orologio
|
|
End Sub
|
|
|
|
' Inizializza l'orologio
|
|
Public Sub Initialize(ParentPanel As Panel, PercentageOfWidth As Float)
|
|
pnlClock = ParentPanel
|
|
cvsClock.Initialize(pnlClock)
|
|
SetClockSize(PercentageOfWidth)
|
|
End Sub
|
|
|
|
' Imposta la dimensione dell'orologio come percentuale della larghezza del pannello
|
|
Public Sub SetClockSize(PercentageOfWidth As Float)
|
|
clockDiameter = pnlClock.Width * PercentageOfWidth / 100
|
|
centerX = pnlClock.Width / 2
|
|
centerY = pnlClock.Height / 2
|
|
DrawClock
|
|
End Sub
|
|
|
|
' Disegna l'orologio
|
|
Public Sub DrawClock
|
|
cvsClock.Initialize(pnlClock)
|
|
|
|
' Cancella il canvas
|
|
cvsClock.DrawColor(Colors.White)
|
|
|
|
' Disegna il cerchio esterno
|
|
cvsClock.DrawCircle(centerX, centerY, clockDiameter / 2, Colors.Black, False, 5)
|
|
|
|
' Disegna le lancette
|
|
Dim now As Long = DateTime.Now
|
|
Dim Hours As Int = DateTime.GetHour(now) Mod 12
|
|
Dim Minutes As Int = DateTime.GetMinute(now)
|
|
Dim Seconds As Int = DateTime.GetSecond(now)
|
|
|
|
' Lancetta ore
|
|
Dim HourAngle As Float = -90 + Hours * 30 + Minutes / 2
|
|
DrawHand(centerX, centerY, clockDiameter * 0.25, HourAngle, 8, Colors.Black)
|
|
|
|
' Lancetta minuti
|
|
Dim MinuteAngle As Float = -90 + Minutes * 6
|
|
DrawHand(centerX, centerY, clockDiameter * 0.4, MinuteAngle, 5, Colors.Blue)
|
|
|
|
' Lancetta secondi
|
|
Dim SecondAngle As Float = -90 + Seconds * 6
|
|
DrawHand(centerX, centerY, clockDiameter * 0.45, SecondAngle, 2, Colors.Red)
|
|
|
|
' Aggiorna il pannello
|
|
pnlClock.Invalidate
|
|
End Sub
|
|
|
|
' Disegna una singola lancetta
|
|
Private Sub DrawHand(x As Float, y As Float, length As Float, angle As Float, width As Int, color As Int)
|
|
Dim endX As Float = x + length * CosD(angle)
|
|
Dim endY As Float = y + length * SinD(angle)
|
|
cvsClock.DrawLine(x, y, endX, endY, color, width)
|
|
End Sub
|