Private Sub Init_Needle(ByVal centerX As Long, ByVal centery As Long, ByVal _
scaleX As Double, ByVal scaleY As Double, ByVal needletype As Integer, ByVal _
operationmode As Integer, ByVal needlecolor As Long)
VUm.needle.centerpos.centerX = centerX
VUm.needle.centerpos.centery = centery
VUm.needle.scale.scaleX = scaleX
VUm.needle.scale.scaleY = scaleY
VUm.needle.needletype = needletype
VUm.needle.operationmode = operationmode
VUm.needle.Color = needlecolor
End Sub
Private Sub Init_Scale(ByVal centerX As Long, ByVal centery As Long, ByVal _
scaleX As Double, ByVal scaleY As Double, ByVal Interval As Long, ByVal _
fontname As String, ByVal FontSize As Long, ByVal fontisbold As Boolean, _
ByVal fontisitalic As Boolean, ByVal txtformat As String, ByVal textcolor As _
Long)
VUm.scale.centerpos.centerX = centerX
VUm.scale.centerpos.centery = centery
VUm.scale.scale.scaleX = scaleX
VUm.scale.scale.scaleY = scaleY
VUm.scale.Interval = Interval
End Sub
Public Sub SetNeedleValueSmooth(ByVal Value As Double)
VUm.needle.operationmode = VUNEEDLE_MODE_SMOOTH
VUm.needle.newvalue = Value
tmrAnimationLoop.Enabled = True
End Sub
Public Sub SetNeedleValueDirect(ByVal Value As Double)
VUm.needle.newvalue = Value
VUm.needle.Value = Value
VUm.needle.a.speed = 0
VUm.needle.a.diff = 0
End Sub
Private Function GetNeedleValue() As Double
GetNeedleValue = VUm.needle.Value
End Function
Public Function GetNeedleNewValue() As Double
GetNeedleNewValue = VUm.needle.newvalue
End Function
Private Function AdjustC(ByVal c As Double) As Double
AdjustC = (c + 90) Mod 360
End Function
Private Function GetXPos(ByVal c As Double, ByVal r As Double) As Double
GetXPos = (Sin(AdjustC(c) * M_PI / 180) * r)
End Function
Private Function GetYPos(ByVal c As Double, ByVal r As Double) As Double
GetYPos = (Cos(AdjustC(c) * M_PI / 180) * r)
End Function
Private Sub Draw()
RefSizeX = VUm.pic.SizeX / 2
RefSizeY = VUm.pic.SizeY / 2
DrawRectangle VUm.pic.hDC, 0, 0, VUm.pic.SizeX, VUm.pic.SizeY, 1, RGB(0, 0, _
0), RGB(0, 0, 0)
'picGauge.Picture = LoadPicture(App.Path & "\gauge.jpg")
DrawVUNeedle
End Sub
Private Function Interpolate(ByVal a1 As Double, ByVal a2 As Double, ByVal _
value1 As Double, ByVal value2 As Double, ByVal Value As Double) As Double
f1 = value1
f2 = value2
fc1 = a1
fc2 = a2
r = (((fc2 - fc1) / (f2 - f1)) * (Value - f1)) + fc1
Interpolate = r
End Function
Private Sub DrawVUNeedle()
Dim p1(0 To 25) As POINTAPI
Dim p2(0 To 25) As POINTAPI
angle = Interpolate(VUm.ticks.minpos_angle, VUm.ticks.maxpos_angle, _
VUm.ticks.min_value, VUm.ticks.max_value, VUm.needle.Value)
If VUm.needle.needletype = 4 Then ' sharp
totalpoints = 5
p1(0).x = VUm.needle.centerpos.centerX + GetXPos(angle - 2, _
RefSizeX * VUm.needle.scale.scaleX * -0.2)
.....
p1(4).y = VUm.needle.centerpos.centery + GetYPos(angle + 90, _
RefSizeY * VUm.needle.scale.scaleY * 0.02)
End If
For i = 0 To totalpoints ' shift for shadow in p2
p2(i).x = p1(i).x + 3
p2(i).y = p1(i).y + 3
Next i
DrawFilledPolygon VUm.pic.hDC, totalpoints, p1(), 1, VUm.needle.Color, _
VUm.needle.Color
End Sub
Private Function log10(ByVal x As Double) As Double
If x = 0 Then log10 = 0 Else log10 = Log(x) / Log(10)
End Function 0 |