Private Const ARCO As Short = 256
Private Const VALORI As Short = 127
Private Const INIZIALE As Short = 142
Private Const PASSO As Byte = 16
Private Const RAGGIO As Short = 100
Private Const AUM_RAGG As Single = 2.3
Private ii As Integer[] = [Color.Green, INIZIALE, 204, Color.Yellow, 346, 40, Color.Red, 385, 13]
Private n As Single
Private DrawingArea1 As DrawingArea
Public Sub Form_Open()
With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
.X = 0
.Y = 0
.W = Me.W
.H = Me.H
End With
End
Public Sub DrawingArea1_MouseMove()
n = (((DrawingArea1.H / 2) - (Mouse.Y - 45)) / (DrawingArea1.H / 3)) * ARCO
If n < 0 Then n = 0
If n > ARCO Then n = ARCO
DrawingArea1.Refresh
End
Public Sub DrawingArea1_Draw()
Dim x, y, t As Short
Dim c, r2 As Float
Dim b As Byte
x = DrawingArea1.W * 0.5
y = DrawingArea1.H * 0.5
' Quando "n" è 0 deve posizionarsi su 142°, tenendo conto che qui 0° è posto tra il I e il IV Quadrante del piano cartesiano
c = (n + INIZIALE)
With Paint
.Brush = .Color(Color.DarkBlue)
' Disegna il cerchietto interno:
.LineWidth = 4.0
.Ellipse(x - 4, y - 4, 8, 8, 0, 360, False)
.Stroke
' Disegna il cerchio esterno
.LineWidth = 12.0
.Ellipse(x - ((RAGGIO * AUM_RAGG) / 2), y - ((RAGGIO * AUM_RAGG) / 2), RAGGIO * AUM_RAGG, RAGGIO * AUM_RAGG, 0, 360, False)
.Stroke
' Disegna i numeri dei valori:
.Brush = .Color(Color.DarkBlue)
.Font.Size = 8.0
r2 = RAGGIO * 0.8
For t = INIZIALE To 398 Step PASSO
.DrawText(CStr(Fix(t - (INIZIALE + 1)) \ 2), (x - 4) + (r2 * Cos(Rad(t))), y + (r2 * Sin(Rad(t))), 5, 5, Align.Center)
Next
.Stroke
' Disegna l'arco con i 3 colori:
.LineWidth = 12.0
r2 = RAGGIO * 0.95
For b = 0 To 6 Step 3
.Brush = .Color(ii[b])
.Arc(x, y, r2, Rad(ii[b + 1]), Rad(ii[b + 2]), False)
.Stroke
Next
' Disegna la lancetta:
.Brush = .Color(Color.Red)
.LineWidth = 1.0
.MoveTo(x, y)
.LineTo(x + (RAGGIO * Cos(Rad(c))), y + (RAGGIO * Sin(Rad(c))))
.Stroke
' Disegna i numeri:
.DrawText(CStr(Fix(n / (ARCO / VALORI))), x - 3, y + 20, 10, 10, Align.Center)
.End
End With
End
Per far ruotare la lancetta indicatrice, cliccare all'altezza dello zero del quadrante e, mantenendo premuto il tasto sinistro del mouse, spostarsi in verticale.