I am working on my first significant WPF application and found myself in need of a simple visual color picker. I quick trip to Bing linked me to a Sacha Barber CodeProject project that met most of my requirements. His associated blog post is here.
My biggest unfilled need was the ability to set the initial color, so I set about adding that to the original code. I made a few changes along the way. The revised code can be downloaded here.
I made the following changes to the ColorPicker control:
- Set the tab behavior so that the focus moves only to controls that can actually be changed
- Set an initial color via constructor or property (note that the search to set the cursor ellipse delays the initial display; there may be a better method)
- Fix single digit hex displays to show two digits
- Add left click to select the color with no mouse move
- Add Mouse Wheel support to change the Alpha value
- Modify color select dragging behavior to handle clicks and mouse movement outside the selection area
I changed the following in the ColorDialog:
- Added ability to set ColorDialog initial color via constructor or property
- Use of Button's IsDefault and IsCancel properties
- Set tab behavior to match standards
I changed the base demo code in Window1 to use the last selected color.
There are many other small changes too numerous to mention. Enjoy.