This gadget is based on my article "Pure C# .NET Desktop Color Picker With Magnifying Glass".
It uses the
MagnifyingGlass class and the
Windows API methods (because Windows is a system requirement to run as Windows Vista Sidebar Gadget ;).
After running the gadget in your sidebar, you see the current selected color. You may select another color by clicking the color preview
panel from the default Windows color dialog. To select a color from the desktop, simply click on the pipette button to enter the select mode.
In the select mode you'll see two magnifying glasses: One following the cursor, another fixed one in the gadget GUI. The gadget will also
display the color of the current pixel in the preview panel on the right side. Just click to quit the exit the select mode and select the color
of the pixel under the mouse cursor. To copy a color value to the Windows clipboard just click on it in the gadget GUI.
The ColorPicker Gadget may be useful for designers to get color values fast and easy, every time from everywhere.
Using the code
You can download only the source or the complete gadget with an installer, including the source. If you choose to install the complete
gadget, you'll find the source zipped in the application folder (f.e. "C:\Program files\Andreas Zimmermann\ColorPicker Gadget\") after
After unzipping the source you find all gadget files that will be copyed by the Vista installer in the subfolder "Gadget". All other files are
the Visual Studio project files for the ColorPickerGadget.dll.
Please have a look at my article "Pure C# .NET Desktop Color Picker With Magnifying Glass" if you want to get informations about how to
A way to display a C# user control within the gadgets HTML is to make the DLLs COM visible and register the class, so you can use the
object HTML tag like this:
4dff1fb3db4d" width="120" height="78" />
I used this class header for the COM:
public partial class Gadget : UserControl
During writing the code I didn't care much about the fact that the application will run as Sidebar Gadget. The only one target was to make
the GUI as small as possible (120 x 100 pixel should be small enough), but to include as much functions as possible, too.
The only real problem I had was the installation: How would the user be possible to install the gadgets only with a few mouse clicks and
without to care about how it works? Simply zipping the files and changing the extension to ".gadget" was no solution because the COM classes
have to be registered to get them working.
So I decided so make an MSI installer that will prepare the use of the gadget. After the installer finished the folder with the shortcut to the
.gadget-file will be opened (for this I created the class
Setup within the ColorPickerGadget.dll). Finally the user
needs to click on "Use ColorPicker Gadget" to install the gadget to the Sidebar.
Points of Interest
This was my first attempt to get something running in the Sidebar. And I had some problems with doing that... So if you want to develop
your own gadget, you may be interested in this:
If you want to use a transparent background, you use something like this:
<g:background src="images/tbg.png" style=
Don't show any text or links on this transparent background, it'll look ugly: Place text elements on a coloured background always.
I had some problems using CSS for defining a style for text links: The hover behavior was ignored. I don't know the reason yet, but maybe
you'll have similar problems with other CSS attributes...
Use of an COM object as GUI
At first the ColorPicker Gadgets GUI was only made of the .NET user control. But then I realized that no options (for moving, closing etc.)
are fading if I hover the GUI while it's used as Sidebar Gadget. At last it seems you need to view a small non-user control area (finally the
wan24.de-link on the ColorPicker Gadget GUI bottom) to enable the user closing and configuring the gadget.
Another problem is that - like I wrote above - it may not be enough to zip and change the file extention to ".gadget" to have an
installer. If you want to use COM objects that are not yet trusted at the target system, they won't work! I choosed a MSI installer for
preparing the gadget as solution.