Yesterday I’ve posted the article on the OpacitySlider Control. The RainbowSlider is one else control to the bug of Color Picker related components.
RainbowSlider control is designed as the mean to select a Color from the color spectrum given. It’s the extension of the
RainbowSlider control overrides the default template of the parent
Slider control and looks like follows:
i.e. its style redefines the slider background and the constituent
Thumb control template.
As you can see at the figure above the
RainbowSlider control takes into account the parent
Orientation property and can be presented as the horizontal or the vertical bar.
SelectedColor Dependency Property of the
RainbowSlider used to get the value of the Color selected. This property value is synchronized with
Value properties values of the parent
Slider control. To set the
SelectedColor value the caller can set the
Value property value to the position of the color in the spectrum (linear interpolation over the
Rainbow color sequence involved). Another way to change the
SelectedColor property from the code is the
RainbowSlider.TrySetSelectedColor method. It gets the color argument and tries to find that color in the Rainbow. On success it sets the selector position accordingly and returns
true; otherwise it returns
false. When the
SelectedColor changes the
RainbowSlider raises the
Rainbow Dependency Property allows to get or set the color spectrum. It’s of the
GradientStopCollection type i.e. represents the sequence of colors along with the position of the color in the spectrum. By default the spectrum is the sequence of equally spaced Red, Orange, Yellow, Lime, Blue, Indigo, Violet, Red colors. When the
Rainbow property changes the
RainbowSlider tries to find the current
SelectedColor value in the new Rainbow. On success it sets the selector position accordingly; otherwise it sets the selector position to the minimum and changes its
SelectedColor to the value corresponding to that position.
The direction the
SelectedColor value changes depends on the value of
IsDirectionReversed property. If it’s false (the default) the initial spectrum color is at the left or at the bottom of the control depending on the orientation.
You can download the code and the samples here:
The archive contains my WPFGears library with samples, tests, etc. It’s the Visual Studio 2008 SP1 solution targeted to .NET Framework 3.5.
You’ll find RainbowSliderSample project there.
RainbowSlider element code is in the WPFGears library project ColorPickerControls folder.
Oleg V. Polikarpotchkin