C# 颜色选择器小工具
一个用 C# 编写的 Windows Vista 侧边栏拾色器小工具
引言
这个小工具基于我的文章,"纯 C# .NET 桌面拾色器,带放大镜"。它使用 MagnifyingGlass
类和 Windows API 方法 (因为 Windows 是作为 Windows Vista 侧边栏小工具运行的系统要求 ;)。
在侧边栏中运行该小工具后,您将看到当前选定的颜色。您可以通过点击默认 Windows 颜色对话框中的颜色预览面板来选择另一种颜色。要从桌面选择颜色,只需单击吸管按钮即可进入选择模式。在选择模式下,您将看到两个放大镜:一个跟随光标,另一个固定在小工具 GUI 中。该小工具还将在右侧的预览面板中显示当前像素的颜色。只需单击以退出选择模式并选择鼠标光标下像素的颜色。要将颜色值复制到 Windows 剪贴板,只需在小工具 GUI 中单击它即可。
ColorPicker
小工具对于设计师来说可能很有用,可以随时随地快速轻松地获取颜色值。
Using the Code
您可以仅下载源代码或带有安装程序的完整小工具,包括源代码。如果您选择安装完整的小工具,您将在安装后在应用程序文件夹(例如“C:\Program files\Andreas Zimmermann\ColorPicker Gadget\”)中找到压缩的源代码。解压缩源代码后,您将找到 Vista 安装程序将复制到子文件夹“Gadget”中的所有小工具文件。所有其他文件都是 ColorPickerGadget.dll 的 Visual Studio 项目文件。
如果您想了解有关如何使用 MagnifyingGlass
类的更多信息,请查看我的文章,"纯 C# .NET 桌面拾色器,带放大镜"。
在小工具的 HTML 中显示 C# 用户控件的一种方法是使 DLL 成为 COM 可见的并注册该类,这样您就可以像这样使用 object
HTML 标签
<object classid="clsid:fc720f6d-e15d-4b4d-82af-
4dff1fb3db4d" width="120" height="78" />
我将这个类头用于 COM
[Guid("fc720f6d-e15d-4b4d-82af-4dff1fb3db4d"),
ComVisible(true)]
public partial class Gadget : UserControl
{
...
}
在编写代码时,我并没有太在意该应用程序将作为侧边栏小工具运行的事实。唯一的目的是使 GUI 尽可能小 (120 x 100 像素应该足够小),但也要包含尽可能多的功能。
我遇到的唯一真正的问题是安装:用户如何通过几次鼠标点击就可以安装小工具而无需关心它如何工作?简单地压缩文件并将扩展名更改为 ".gadget" 并不是解决方案,因为必须注册 COM 类才能使它们工作。所以我决定制作一个 MSI 安装程序,它将准备好使用该小工具。安装程序完成后,将打开包含 .gadget-file 快捷方式的文件夹(为此,我在 ColorPickerGadget.dll 中创建了 Setup
类)。最后,用户需要点击“使用 ColorPicker 小工具”将小工具安装到侧边栏。
关注点
这是我第一次尝试在侧边栏中运行某些东西。我遇到了一些问题……所以如果你想开发自己的小工具,你可能会对这个感兴趣
透明背景
如果你想使用透明背景,你可以这样做
<g:background src="images/tbg.png" style=
"position:absolute;left:0px;width:120px;height:100px;
top:0px;z-index:-999;" />
不要在此透明背景上显示任何文本或链接,它看起来会很难看:始终将文本元素放置在彩色背景上。
CSS
我遇到了一些问题,使用 CSS 定义文本链接的样式:悬停行为被忽略。我尚不清楚原因,但也许您也会遇到其他 CSS 属性的类似问题...
将 COM 对象用作 GUI
起初,ColorPicker
小工具的 GUI 仅由 .NET 用户控件组成。但后来我意识到,当它用作侧边栏小工具时,如果我将鼠标悬停在 GUI 上,则没有选项(用于移动、关闭等)会消失。最后,您似乎需要查看一个小型的非用户控件区域(最终,ColorPicker
小工具 GUI 底部的 wan24.de-link
)才能使用户能够关闭和配置该小工具。
另一个问题是 - 正如我上面所写的那样 - 仅压缩并将文件扩展名更改为 ".gadget" 可能不足以拥有一个安装程序。如果你想使用目标系统上尚未受信任的 COM 对象,它们将无法工作!我选择了一个 MSI 安装程序来准备小工具作为解决方案。
历史
- 2007年2月11日:初始版本