Introduction
What is the use of MBColorPicker
? It provides a graphical interface to select a color from a set of various colors. It is simple to use, just drop it onto a form, adjust the design time properties and use it like normal controls.
Background
MBColorPicker
is a color picker control that provides various functionalities so the user can select the required color from a set of colors. The language used is VB.NET.
Control properties
Here is the list of properties available in MBColorPicker
:
PickedColor
: This property gets and sets the color picked by MBColorPicker
.
Arrow
: This property sets the arrow on the MBColorPicker
button.
BaseColor
: This property sets the base color of the MBColorPicker
button.
BaseStrokeColor
: This property sets the base stroke color of the MBColorPicker
button.
OnColor
: This property sets the on color of the MBColorPicker
button.
OnStrokeColor
: This property sets the on stroke color of the MBColorPicker
button.
PressColor
: This property sets the press color of the MBColorPicker
button.
PressStrokeColor
: This property sets the press stroke color of the MBColorPicker
button.
Radius
: This property sets the corner radius of the MBColorPicker
button.
Code
The concept for this MBColorPicker
came from the Microsoft Office 2007 color picker. I organized my paint event into layers like this:
- Protected Overrides Sub OnPaint(ByVal pevent As System.Windows.Forms.PaintEventArgs)
- Dim g As Graphics = pevent.Graphics
- g.SmoothingMode = SmoothingMode.HighQuality
- g.InterpolationMode = InterpolationMode.High
- Dim r As Rectangle = New Rectangle(New Point(-1, -1), New Size(Me.Width + _radius, Me.Height + _radius))
- Dim path As GraphicsPath = New GraphicsPath
- Dim rp As Rectangle = New Rectangle(New Point(0, 0), New Size(Me.Width - 1, Me.Height - 1))
- DrawArc(rp, path)
- FillGradients(g, path)
- DrawImage(g)
- DrawText(g)
- DrawArrow(g)
- End Sub
The following are some methods that provide a transparent look to
MBColorPicker
. This method draws the background for
MBColorPicker
.
-
-
-
- Protected Overrides Sub OnCreateControl()
- MyBase.OnCreateControl()
- A0 = BaseColor.A
- R0 = BaseColor.R
- G0 = BaseColor.G
- B0 = BaseColor.B
- _colorStroke = _baseStroke
- Dim r As Rectangle = New Rectangle(New Point(-1, -1), _
- New Size(Me.Width + _radius, Me.Height + _radius))
- If Me.Size <> Nothing Then
- Dim pathregion As GraphicsPath = New GraphicsPath
- DrawArc(r, pathregion)
- Me.Region = New Region(pathregion)
- End If
- End Sub
This methods draws the color boxes for
MBColorPicker
:
-
-
-
-
- Private Sub DrawColorBoxes(ByVal graphics As Graphics)
- DrawColorBelt(graphics, 0, _TopBoxMargin1, True)
- For i As Int16 = 1 To _ColorMatrixY - 2
- DrawColorBelt(graphics, i, (i - 1) * _ColorBoxUnit + _TopBoxMargin2, False)
- Next
- For i As Int16 = 0 To _ColorMatrixX - 1
- graphics.DrawRectangle(New Pen(Color.Gray), i * _
- (_ColorBoxUnit + _ColorBoxMarginX) + _ColorBoxMarginX, _
- _TopBoxMargin2, _ColorBoxUnit, _ColorBoxUnit * 5)
- Next
- DrawColorBelt(graphics, _ColorMatrixY - 1, _TopBoxMargin3, True)
- End Sub
-
-
-
-
-
-
-
-
-
- Private Sub DrawColorBelt(ByVal graphics As Graphics, ByVal no As Int16, _
- ByVal yOffSet As Int16, ByVal border As Boolean)
- For i As Int16 = 0 To _ColorMatrixX - 1
- DrawColorBox(graphics, _ColorMatrix(i, no), _
- New Point(i * (_ColorBoxUnit + _ColorBoxMarginX) + _ColorBoxMarginX, yOffSet), border)
- Next
- End Sub
This method handles the drop down color for
MBColorPicker
:
- Protected Overrides Sub OnMouseUp(ByVal mevent As System.Windows.Forms.MouseEventArgs)
- R0 = OnColor.R
- G0 = OnColor.G
- B0 = OnColor.B
- _colorStroke = OnStrokeColor
- _showbase = MB_ShowBase.Yes
- i_mode = 1
- mouse = True
- If _splitlocation = MB_SplitLocation.Right And xmouse > _
- Me.Width - _splitdistance And _splitbutton = MB_SplitButton.Yes Then
- If (_arrow = MB_Arrow.ToDown) Then
- Dim _MBColorPicker As MBColorPickerHelper = New MBColorPickerHelper(Me)
- _MBColorPicker.Show(Me.Parent, New Point(Me.Location.X, Me.Height + Me.Location.Y))
- ElseIf (_arrow = MB_Arrow.ToRight) Then
- Dim _MBColorPicker As MBColorPickerHelper = New MBColorPickerHelper(Me)
- _MBColorPicker.Show(Me.Parent, New Point(Me.Location.X + Me.Width, _
- (Me.Location.Y + Me.Height / 2) - _MBColorPicker.Height / 2))
- End If
- Else
- MyBase.OnMouseUp(mevent)
- If (_Keeppressed) Then
- _Ispressed = True
- For Each _control As Control In Me.Parent.Controls
- If _control.Name <> Me.Name And TypeOf (_control) Is MBColorPickerButton = True Then
- CType(_control, MBColorPickerButton)._Ispressed = False
- CType(_control, MBColorPickerButton).UpdateMouseLeave()
- End If
- Next
- End If
- End If
- End Sub
Using the code
It is very easy to use the
MBColorPicker
in your application. Just add the reference of the provided DLL to your application and just drag and drop.
History
MBColorPicker
version 1.0.