默认调色板
默认调色板是一个颜色值数组,标识默认情况下可与设备上下文一起使用的颜色。 每当应用程序为支持调色板的设备创建上下文时,系统会将默认调色板与上下文相关联。 默认调色板可确保颜色可供应用程序使用,而无需执行任何进一步操作。
默认调色板通常有 20 个条目, (颜色) ,但具体条目数可能因设备而异。 此数字等于 GetDeviceCaps 函数返回的 NUMCOLORS 值。 应用程序可以通过枚举纯色笔检索默认调色板中颜色的颜色值,这与发现非palette 设备上可用的颜色的方法相同。 默认调色板中的颜色取决于设备。 例如,显示设备通常使用 VGA 显示器的 16 种标准颜色和 Windows 定义的 4 种其他颜色。 打印设备可能使用其他默认颜色。
使用默认调色板时,应用程序使用颜色值来指定笔和文本颜色。 如果请求的颜色不在调色板中,则系统会使用调色板中最接近的颜色来近似该颜色。 如果应用程序请求调色板中不存在的纯色画笔颜色,系统会使用调色板中的颜色进行抖变来模拟该颜色。
为了避免近似值和抖动,应用程序还可以使用调色板索引而不是颜色值来指定笔、画笔和文本颜色。 调色板索引是标识特定调色板条目的整数值。 应用程序可以使用调色板索引来代替颜色值,但必须使用 PALETTEINDEX 宏来创建索引。
调色板索引仅适用于支持调色板的设备。 为了避免这种设备依赖性,使用相同代码绘制调色板和非调色板设备的应用程序应使用调色板相对颜色值来指定笔、画笔和文本颜色。 这些值与颜色值相同,但创建纯色画笔时除外。 (在调色板设备上,由调色板相对颜色值指定的纯色画笔颜色受颜色近似而不是 dithering 的影响。) 应用程序必须使用 PALETTERGB 宏来创建调色板相对颜色值。
系统不允许应用程序更改默认调色板中的条目。 若要使用默认调色板中颜色以外的颜色,应用程序必须创建自己的逻辑调色板,并在设备上下文中选择调色板。