颜色近似值和抖动
尽管应用程序可以在不考虑设备的颜色功能的情况下使用颜色,但生成的输出可能不像精心选择颜色的输出那样丰富和令人愉悦。 很少有设备(如果有)保证每个可能的颜色值完全匹配;因此,如果应用程序请求设备无法生成的颜色,系统将通过使用设备可以生成的颜色来近似该颜色。 例如,如果应用程序尝试为黑白打印机创建红色笔,它将接收黑色笔,而不是系统使用黑色作为红色的近似值。
应用程序可以使用 GetNearestColor 函数发现系统是否会近似于给定的颜色。 函数采用颜色值,并返回设备可以生成的最接近匹配颜色的颜色值。 系统用于确定此近似值的方法取决于设备驱动程序及其颜色功能。 在大多数情况下,近似颜色的总体强度最接近所请求颜色的强度。
当应用程序创建笔或设置文本的颜色时,如果不存在完全匹配项,系统始终会近似于颜色。 当应用程序创建纯色画笔时,系统可能会尝试通过抖色来模拟请求的颜色。 抖色 通过在图案中交替使用两种或更多种颜色来模拟颜色。 例如,可以通过交替使用红色和白色的不同组合来模拟不同的粉红色阴影。 根据颜色和图案,抖色可以产生合理的模拟。 它对于单色设备最有用,因为它将可用“颜色”的数量远远超出了简单的黑白范围。
用于创建抖动颜色的方法取决于设备驱动程序。 大多数设备驱动程序使用标准抖动算法,该算法基于所请求的红色、绿色和蓝色的强度值生成模式。 通常,设备无法生成的任何请求颜色都会受到模拟,但在系统模拟颜色时不会通知应用程序。 此外,应用程序无法修改或更改设备驱动程序的抖动算法。 但是,应用程序可以通过创建和使用模式画笔来绕过算法。 这样,应用程序通过在用于创建画笔的位图中组合纯色来创建自己的抖色。