Skip to content

Commit 6f2abf4

Browse files
committed
Fixed gradient drawing issue
Fixed new issue that was introduced where the gradient was not drawing correctly. It seems like the wrong coordinates were being used to calculate the gradient brush. - Corrected naming on gradient orientation enums - Reorganized logic in arc drawing subroutine - Delete unused private fields and organize others
1 parent 105b3c1 commit 6f2abf4

File tree

1 file changed

+37
-38
lines changed

1 file changed

+37
-38
lines changed

WinNUT_V2/WinNUT-Client/Controls/UPSVarGauge.vb

Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,9 @@ Friend Class UPSVarGauge
1515

1616
#Region "Private Fields"
1717

18-
Private ReadOnly drawGaugeBackground = True
19-
2018
Private ReadOnly m_value1 As Single
2119
Private m_value2 As Single
2220

23-
Private ReadOnly m_Center = New Point(74, 70)
2421
Private ReadOnly m_MinValue As Single = 0
2522
Private ReadOnly m_MaxValue As Single = 100
2623

@@ -29,15 +26,15 @@ Friend Class UPSVarGauge
2926
Private ReadOnly m_BaseArcSweep = 270
3027
Private ReadOnly m_BaseArcWidth = 5
3128

32-
Private ReadOnly m_ScaleLinesInterInnerRadius = 40
33-
Private ReadOnly m_ScaleLinesInterOuterRadius = 48
34-
Private ReadOnly m_ScaleLinesInterWidth = 1
35-
3629
Private ReadOnly m_ScaleLinesMinorTicks = 9
3730
Private ReadOnly m_ScaleLinesMinorInnerRadius = 42
3831
Private ReadOnly m_ScaleLinesMinorOuterRadius = 48
3932
Private ReadOnly m_ScaleLinesMinorWidth = 1
4033

34+
Private ReadOnly m_ScaleLinesInterInnerRadius = 40
35+
Private ReadOnly m_ScaleLinesInterOuterRadius = 48
36+
Private ReadOnly m_ScaleLinesInterWidth = 1
37+
4138
Private ReadOnly m_ScaleLinesMajorStepValue = 50.0F
4239
Private ReadOnly m_ScaleLinesMajorInnerRadius = 40
4340
Private ReadOnly m_ScaleLinesMajorOuterRadius = 48
@@ -56,7 +53,7 @@ Friend Class UPSVarGauge
5653
Private ReadOnly m_NeedleWidth = 2
5754

5855
Private m_gradientType = GradientTypeEnum.RedGreen
59-
Private m_gradientOrientation = GradientOrientationEnum.BottomToUp
56+
Private m_gradientOrientation = GradientOrientationEnum.BottomToTop
6057
Private m_unitvalue1 = UnitValueEnum.Volts
6158
Private m_unitvalue2 = UnitValueEnum.None
6259

@@ -66,7 +63,7 @@ Friend Class UPSVarGauge
6663

6764
' Map Value1 onto Value
6865
<Browsable(True),
69-
Category("UPSVarGauge"),
66+
Category("AGauge"),
7067
Description("First gauge value.")>
7168
Public Property Value1 As Single
7269
Get
@@ -162,8 +159,8 @@ Friend Class UPSVarGauge
162159
End Enum
163160

164161
Public Enum GradientOrientationEnum
165-
UpToBottom
166-
BottomToUp
162+
TopToBottom
163+
BottomToTop
167164
RightToLeft
168165
LeftToRight
169166
End Enum
@@ -178,45 +175,47 @@ Friend Class UPSVarGauge
178175

179176
Public Sub New()
180177
MyBase.New()
178+
InitializeComponent()
181179

182180
Size = New Size(148, 130)
183-
Center = New Point(148, 130)
184181
End Sub
185182

186-
Overrides Sub RenderDefaultArc(graphics As Graphics, center As Point, centerFactor As Single)
183+
Overrides Sub RenderDefaultArc(graphics As Graphics)
187184
If m_BaseArcRadius > 0 Then
188185
Dim baseArcRadius As Integer = m_BaseArcRadius * centerFactor
189-
If m_gradientType <> GradientTypeEnum.None Then
190-
Dim GradientP1Brush = New Point(0, (center.X + baseArcRadius + m_BaseArcWidth + 2))
191-
Dim GradientP2Brush = New Point(0, (center.X - baseArcRadius - m_BaseArcWidth - 2))
186+
187+
If m_gradientType = GradientTypeEnum.None Then
188+
Using pnArc = New Pen(BaseArcColor, m_BaseArcWidth * centerFactor)
189+
graphics.DrawArc(pnArc, New Rectangle(Center.X - baseArcRadius,
190+
Center.Y - baseArcRadius,
191+
2 * baseArcRadius,
192+
2 * baseArcRadius),
193+
m_BaseArcStart, m_BaseArcSweep)
194+
End Using
195+
196+
Else
197+
Dim GradientP1Brush = New Point(0, (Center.X + baseArcRadius + m_BaseArcWidth + 2))
198+
Dim GradientP2Brush = New Point(0, (Center.X - baseArcRadius - m_BaseArcWidth - 2))
192199

193200
Select Case m_gradientOrientation
194-
Case GradientOrientationEnum.UpToBottom
195-
GradientP1Brush = New Point(0, (center.X - baseArcRadius - m_BaseArcWidth - 2))
196-
GradientP2Brush = New Point(0, (center.X + baseArcRadius + m_BaseArcWidth + 2))
197-
Case GradientOrientationEnum.BottomToUp
198-
GradientP1Brush = New Point(0, (center.X + baseArcRadius + m_BaseArcWidth + 2))
199-
GradientP2Brush = New Point(0, (center.X - baseArcRadius - m_BaseArcWidth - 2))
201+
Case GradientOrientationEnum.TopToBottom
202+
GradientP1Brush = New Point(0, (Center.Y - baseArcRadius - m_BaseArcWidth - 2))
203+
GradientP2Brush = New Point(0, (Center.Y + baseArcRadius + m_BaseArcWidth + 2))
204+
Case GradientOrientationEnum.BottomToTop
205+
GradientP1Brush = New Point(0, (Center.Y + baseArcRadius + m_BaseArcWidth + 2))
206+
GradientP2Brush = New Point(0, (Center.Y - baseArcRadius - m_BaseArcWidth - 2))
200207
Case GradientOrientationEnum.RightToLeft
201-
GradientP1Brush = New Point((center.Y + baseArcRadius + m_BaseArcWidth + 2), 0)
202-
GradientP2Brush = New Point((center.Y - baseArcRadius - m_BaseArcWidth - 2), 0)
208+
GradientP1Brush = New Point((Center.X + baseArcRadius + m_BaseArcWidth + 2), 0)
209+
GradientP2Brush = New Point((Center.X - baseArcRadius - m_BaseArcWidth - 2), 0)
203210
Case GradientOrientationEnum.LeftToRight
204-
GradientP1Brush = New Point((center.Y - baseArcRadius - m_BaseArcWidth - 2), 0)
205-
GradientP2Brush = New Point((center.Y + baseArcRadius + m_BaseArcWidth + 2), 0)
211+
GradientP1Brush = New Point((Center.X - baseArcRadius - m_BaseArcWidth - 2), 0)
212+
GradientP2Brush = New Point((Center.X + baseArcRadius + m_BaseArcWidth + 2), 0)
206213
End Select
207214

208215
Dim myArc1Gradient = New LinearGradientBrush(GradientP1Brush, GradientP2Brush, Color.Red, Color.Green)
209216
Using pnArc = New Pen(myArc1Gradient, m_BaseArcWidth * centerFactor)
210-
graphics.DrawArc(pnArc, New Rectangle(center.X - baseArcRadius,
211-
center.Y - baseArcRadius,
212-
2 * baseArcRadius,
213-
2 * baseArcRadius),
214-
m_BaseArcStart, m_BaseArcSweep)
215-
End Using
216-
Else
217-
Using pnArc = New Pen(BaseArcColor, m_BaseArcWidth * centerFactor)
218-
graphics.DrawArc(pnArc, New Rectangle(center.X - baseArcRadius,
219-
center.Y - baseArcRadius,
217+
graphics.DrawArc(pnArc, New Rectangle(Center.X - baseArcRadius,
218+
Center.Y - baseArcRadius,
220219
2 * baseArcRadius,
221220
2 * baseArcRadius),
222221
m_BaseArcStart, m_BaseArcSweep)
@@ -228,13 +227,13 @@ Friend Class UPSVarGauge
228227
''' <summary>
229228
''' Override PostRender and render the value of the gauge with unit.
230229
''' </summary>
231-
Overrides Sub PostRender(graphics As Graphics, center As Point, centerFactor As Single)
230+
Overrides Sub PostRender(graphics As Graphics)
232231
Dim PenString = New Pen(Color.Black)
233232
Dim PenFontV1 = New Font("Microsoft Sans Serif", 8, FontStyle.Bold)
234233
Dim PenFontV2 = New Font("Microsoft Sans Serif", 7, FontStyle.Bold)
235234
Dim StringPen = New SolidBrush(Color.Black)
236235
Dim LineHeight = 15
237-
Dim StrPos = center
236+
Dim StrPos = Center
238237
StrPos.Y += 5
239238

240239
If UnitValue1 <> UnitValueEnum.None Then

0 commit comments

Comments
 (0)