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