颜色对话框的自定义颜色扩展允许用户使用RGB或HSL值指定颜色。但是,CHOOSECOLOR结构仅使用RGB值来报告用户创建或选择的颜色。
RGB颜色模型
RGB模型用于指示显示器和其他发光的设备的颜色。有效的红色,绿色和蓝色值范围为0到255,0表示最小强度,255表示最大强度。下图显示了如何将原色红,绿和蓝组合起来,以产生四种附加颜色。(对于显示设备,当红色,绿色和蓝色值设置为0时,颜色为黑色。在显示技术方面,黑色是没有所有颜色。)
以下是八种颜色及其相关的RGB值。
颜色 | RGB值 |
红 | 255, 0, 0 |
绿色 | 0, 255, 0 |
蓝色 | 0, 0, 255 |
青色 | 0, 255, 255 |
品红 | 255, 0, 255 |
黄色 | 255, 255, 0 |
白色 | 255, 255, 255 |
黑色 | 0, 0, 0 |
Windows将内部颜色存储为具有以下十六进制形式的32位RGB值:
0x00bbggrr
低位字节包含红色相对强度的值;第二个字节包含一个绿色值;第三个字节包含一个蓝色的值。高位字节必须为零。
您可以使用RGB宏根据红色,绿色和蓝色组件的指定强度获取RGB值。使用GetRValue,GetBValue和GetGValue宏从RGB颜色值中提取单个颜色。
HSL颜色模型
颜色对话框提供了指定HSL值的控件。下图显示了颜色对话框中出现的色谱控制和亮度滑块控制。该图还显示了用户可以使用这些控件指定的值的范围。
在颜色对话框中,饱和度和亮度值必须在0到240之间,色相值必须在0到239之间。
将HSL值转换为RGB值
Color对话框的COMDLG32.DLL中提供的对话框过程包含将HSL值转换为相应RGB值的代码。以下是几种颜色及其相关的HSL和RGB值。
颜色 | HSL值 | RGB值 |
红 | (0, 240, 120) | (255, 0, 0) |
黄色 | (40, 240, 120) | (255, 255, 0) |
绿色 | (80, 240, 120) | (0, 255, 0) |
青色 | (120, 240, 120) | (0, 255, 255) |
蓝色 | (160, 240, 120) | (0, 0, 255) |
品红 | (200, 240, 120) | (255, 0, 255) |
白色 | (0, 0, 240) | (255, 255, 255) |
黑色 | (0, 0, 0) | (0, 0, 0) |