嘿,我正在做一个VisualBasic Windows窗体控制项目,我遇到了一个小问题:
这是我的OnPaint方法:
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
Dim g As Graphics
g = e.Graphics
Dim ancho As Integer = Me.Width / 2
Dim alto As Integer = Me.Height / 2
_posiciox = 5
Percentatge(_maxim,_minim)
For Index As Double = 0.1 To 10.0
If Index <= _percent Then
If Index >= 9 Then
g.FillRectangle(_color4, _posiciox, alto - 10, 40, 20)
ElseIf Index >= 8 Then
g.FillRectangle(_color3, _posiciox, alto - 10, 40, 20)
ElseIf Index >= 6 Then
g.FillRectangle(_color2, _posiciox, alto - 10, 40, 20)
Else
g.FillRectangle(_color1, _posiciox, alto - 10, 40, 20)
End If
End If
g.DrawRectangle(Pens.Black, _posiciox, alto - 10, 40, 20)
_posiciox = _posiciox + 45
Next
End Sub
填充的颜色是Brushes.Color params。我还想让用户选择这种颜色。
我尝试使用这样的公共财产:
Public Property ColorBaix() As Color
Get
Return Color.Coral
End Get
Set(ByVal value As Color)
End Set
End Property
但我无法将Brushes.Color转换为Color.Color:
我发现了一些例子Colors to Brush,但由于重载问题,我无法在OnPaint上使用“new param”。
解决:
我改编了我的项目:
<Description("Color Primari")>
Public Property ColorBaix() As Color
Get
Return color1
End Get
Set(ByVal value As Color)
color1 = value
_color1 = New SolidBrush(value)
Invalidate()
End Set
End Property
答案 0 :(得分:1)
你正在咆哮错误的树。
您不想将画笔变成颜色,您希望将现有画笔的颜色属性设置为新值。
所以当你第一次刷牙时,你做了这样的事情:
Dim mybrush As New SolidBrush(Color.Aqua)
然后你要设置颜色
mybrush.Color = Color.Azure
如果你想获得画笔的颜色,那么你可以这样做:
Dim myColour As New Color
myColour = mybrush.Color