65.9K
CodeProject 正在变化。 阅读更多。
Home

颜色预览和选择器小程序

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.67/5 (6投票s)

2002年7月16日

CPOL

8分钟阅读

viewsIcon

115703

downloadIcon

1883

一个简单的小程序,可以让你预览各种字体和背景颜色如何相互作用。它还具有从屏幕上拾取任何颜色的能力。

引言

这是一个简单的小程序,可用于预览各种彩色字体和背景颜色如何相互作用。它还能够从屏幕上的任何位置拾取颜色。

此应用程序基于 Colin Davies 的 Corner Color Test,但遗憾的是,我在 Win2000 机器上运行它时遇到了一些问题。我没有打扰非常忙于他最新项目的 Colin,而是想自己尝试编写一个版本。

致谢

  • Colin Davies:提供原始创意,以及在开发此应用程序过程中提供的帮助和建议。
  • Dr Joseph Newcomer:提供他的 CImageButton 类
  • Keith Rule:提供他的 CMemDC 类
  • 各种其他人:提供建议和测试。

使用颜色小程序

注意:所有设置都保存在注册表中,键值为:

HKEY_CURRENT_USER
    \Software
        \PJ Arends
            \Colour
                \Settings

主窗口

Main Window

CONTROL FUNCTION
颜色滑块 通过移动滑块来调整各种颜色的强度。您可以使用向上和向下的箭头键进行调整,并使用左右键在滑块之间切换。这些控件没有快捷键,但可以轻松地从其关联的编辑控件进行控制。
编辑控件 在编辑控件中手动输入颜色值。您可以使用向上和向下的箭头键增加或减少编辑控件中的值。以下快捷键组合会将焦点设置到编辑控件:
  • Alt-R 红色编辑控件
  • Alt-G 绿色编辑控件
  • Alt-B 蓝色编辑控件
前景单选按钮 滑块调整样本前景的颜色。

快捷键:Alt-F

背景单选按钮 滑块调整样本背景的颜色。

快捷键:Alt-K

拾色按钮

使用鼠标从屏幕上拾取颜色。找到喜欢的颜色后,按 Control-Alt-P,“拾色”选项将关闭,并保存颜色。

  • 快捷键(Alt-P) -  开始
  • 快捷键(Control-Alt-P) -  停止
放大复选框 与“拾色”一起使用。在从屏幕拾取颜色时,光标将位于一个跟随光标在屏幕上移动的小放大镜窗口内。使用键盘上的箭头键可以更精细地控制光标。通过单击鼠标左键、按下 Enter 键或 Esc 键可以关闭放大镜窗口。

快捷键:Alt-M

十六进制复选框 在十进制和十六进制之间切换强度显示数字。

快捷键:Alt-H

Web 安全复选框 将颜色限制为 216 种 Web 安全颜色。

快捷键:Alt-W

重置按钮 将文本和背景颜色重置为系统默认值。

快捷键:Alt-S

复制按钮 将颜色值复制到剪贴板。

快捷键:Alt-C

选项按钮 打开显示选项对话框。

快捷键:Alt-O

箭头按钮 将颜色程序窗口移动到角落。这些按钮没有关联的快捷键。

颜色选项对话框

Colour Options Dialog

CONTROL FUNCTION
确定按钮 关闭对话框,保存并应用设置。

快捷键:Enter

取消按钮 关闭对话框,恢复到旧设置。

快捷键:Escape

默认按钮 将所有控件设置为默认值。

快捷键:Alt-D

始终置顶复选框 主窗口将始终显示在屏幕上所有其他窗口的顶部。

快捷键:Alt-A

窗口大小编辑框 放大镜窗口的边长(例如,输入 100 将得到一个 100 像素 x 100 像素的窗口)。

快捷键:Alt-Z

显示像素编辑框 放大镜窗口中显示的像素数(例如,输入 9 将在窗口中显示一个 9 像素 x 9 像素的网格)。

快捷键:Alt-P

形状单选按钮 样本窗口将显示一个形状而不是文本。

快捷键:Alt-H

矩形单选按钮 形状将是矩形。

快捷键:Alt-R

三角形单选按钮 形状将是三角形。

快捷键:Alt-N

椭圆形单选按钮 形状将是椭圆形。

快捷键:Alt-E

高度编辑框 形状的高度(以像素为单位)。

快捷键:Alt-G

宽度编辑框 形状的宽度(以像素为单位)。

快捷键:Alt-W

文本单选按钮 样本窗口将显示文本而不是形状。

快捷键:Alt-T

样本单选按钮和编辑框 文本将是用户在编辑框中输入的自定义文本。

快捷键:Alt-M

光标屏幕坐标 文本将是鼠标光标的屏幕坐标。

快捷键:Alt-S

字体按钮 打开字体选择对话框,用于选择显示文本的字体。

快捷键:Alt-F

十进制格式编辑框 十进制输出的格式化字符串。格式化字符串应遵循 MFC CString::Format 函数中使用的格式化字符串的规则,但要使用 'r' 或 'R' 作为红色颜色的占位符,'g' 或 'G' 作为绿色颜色的占位符,'b' 或 'B' 作为蓝色颜色的占位符,而不是使用 'd' 或 'i'。

例如:如果 RGB 值为 171、222、106,并且格式字符串为(不包括引号):“Red = %r, Green = %g, Blue = %b”,则输出将是:“Red = 171, Green = 222, Blue = 106”。

快捷键:Alt-C

十六进制格式编辑框 十六进制输出的格式化字符串。格式化字符串应遵循 MFC CString::Format 函数中使用的格式化字符串的规则,但使用小写 'r'、'g' 或 'b' 代替 'x' 来表示十六进制数字中的小写字母,并使用大写 'R'、'G' 或 'B' 代替 'X' 来表示十六进制数字中的大写字母。

例如:如果 RGB 值为 AB、DE、6A,并且格式字符串为(不包括引号):“Red = 0x%08R and Blue is %b, Ok?”,则输出将是:“Red = 0x000000AB and Blue is 6a, Ok?”。

快捷键:Alt-X

相关类

CMagnifierWindow 类

CMagnifierWindow 类是一个简单的类,由 Color 小程序用于显示屏幕的放大部分。当放大镜窗口显示在屏幕上时,它将始终以鼠标光标为中心。您可以使用鼠标或键盘上的箭头键移动光标和放大镜窗口。单击鼠标左键或按 Enter 键或 Esc 键将隐藏放大镜窗口。

要在您自己的应用程序中使用该类,请将文件 MagnifierWindow.hMagnifierWindow.cpp 添加到您的项目中。只需在代码中声明该类的一个实例,调用 Create() 成员函数创建窗口,调用 ShowMagnifier() 函数使用放大镜,然后调用 HideMagnifier() 函数停止使用它。当用户通过单击或使用键盘隐藏放大镜窗口时,窗口将发布一个用户定义的 `WMU_HIDEMAGNIFIER` 消息,该消息在 MagnifierWindow.h 头文件中定义。

放大镜的操作非常简单。在 ShowMagnifier() 函数中,会截取整个屏幕的快照并将其保存在一个屏幕大小的位图中,该位图会留在内存设备上下文中,然后使用 ShowWindow(SW_SHOW) 函数调用来显示窗口。当窗口在屏幕上移动时,需要放大的屏幕部分将使用 StretchBlt() 函数绘制到放大镜窗口中。然后,在 HideMagnifier 函数中,会销毁位图和内存设备上下文,并使用 ShowWindow(SW_HIDE) 函数调用来隐藏窗口。

CMagnifierWindow 类成员函数

CMagnifierWindow::CMagnifierWindow()

类构造函数初始化类成员,但不会创建实际窗口,您必须调用 Create() 函数来完成此操作。构造函数不接受任何参数,也不返回值。

BOOL CMagnifierWindow::Create (int size, int pixels, CWnd* pParentWnd)

Create() 函数创建实际的放大镜窗口,但将其隐藏起来。如果成功创建窗口,Create() 函数返回一个非零值,如果失败则返回零。

参数

  • int size - 放大镜窗口的大小(以像素为单位)。
  • int pixels - 放大镜窗口中显示的像素数。
  • CWnd *pParentWnd - 指向放大镜窗口父窗口的指针。当用户隐藏放大镜窗口时,这是将接收 `WMU_HIDEMAGNIFIER` 消息的窗口。

BOOL CMagnifierWindow::ShowMagnifier()

ShowMagnifier() 函数在屏幕上显示放大镜窗口。函数成功时返回 TRUE,失败时返回 FALSE。该函数不接受任何参数。

void CMagnifierWindow::HideMagnifier()

HideMagnifier() 函数从屏幕上移除放大镜窗口,但不会销毁它。该函数不接受任何参数,也不返回值。

其他类

虽然其他类没什么特别的,但有些人可能对某些功能感兴趣。

CNumEdit 类(NumEdit.cppNumEdit.h)是 CEdit 的派生类,它将输入限制为 0 到 255 之间的十进制或十六进制数字。该类使用 `EN_UPDATE` 消息处理程序来验证输入的数字。

CColourSlider 类(ColourSlider.cppColourSlider.h)是 CSliderCtrl 的简单子类,它在滑轨条中绘制渐变颜色。

就这样,希望有些人会觉得这很有用。

© . All rights reserved.