刷到颜色

时间:2015-02-26 11:44:55

标签: vb.net visual-studio-2010 vba

嘿,我正在做一个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

1 个答案:

答案 0 :(得分:1)

你正在咆哮错误的树。

您不想将画笔变成颜色,您希望将现有画笔的颜色属性设置为新值。

所以当你第一次刷牙时,你做了这样的事情:

        Dim mybrush As New SolidBrush(Color.Aqua)

然后你要设置颜色

    mybrush.Color = Color.Azure

如果你想获得画笔的颜色,那么你可以这样做:

       Dim myColour As New Color

    myColour = mybrush.Color