Приближение цвета и дизеринг
Хотя приложение может использовать цвет без учета цветовых возможностей устройства, полученные выходные данные могут быть не столь информативными и приятными, как выходные данные, для которых тщательно выбран цвет. Немногие устройства, если таковые имеются, гарантируют точное соответствие для всех возможных значений цвета; Поэтому, если приложение запрашивает цвет, который устройство не может создать, система приблизит этот цвет с помощью цвета, который может создать устройство. Например, если приложение пытается создать красную ручку для черно-белого принтера, оно получит черную ручку, а не использует черный цвет в качестве приближения к красному.
Приложение может определить, будет ли система приблизиться к заданному цвету с помощью функции GetNearestColor . Функция принимает значение цвета и возвращает значение цвета ближайшего соответствующего цвета, которое может создать устройство. Метод, используемый системой для определения этого приближения, зависит от драйвера устройства и его цветовых возможностей. В большинстве случаев общая интенсивность приблизительного цвета ближе всего к интенсивности запрошенного цвета.
Когда приложение создает перо или задает цвет для текста, система всегда приблизит цвет, если точного соответствия не существует. Когда приложение создает сплошную кисть, система может попытаться имитировать запрошенный цвет путем размыкания. Dithering имитирует цвет, чередуя два или более цветов в узоре. Например, различные оттенки розового можно смоделировать, чередуя различные сочетания красного и белого. В зависимости от цвета и шаблона, смеяние может привести к разумному моделированию. Это наиболее полезно для монохромных устройств, так как оно расширяет количество доступных "цветов" далеко за пределы простого черно-белого.
Метод, используемый для создания цветовых элементов, зависит от драйвера устройства. Большинство драйверов устройств используют стандартный алгоритм стирания, который создает шаблон на основе значений интенсивности запрошенного красного, зеленого и синего цветов. Как правило, любой запрошенный цвет, который не может быть создан устройством, подлежит имитации, но приложение не получает уведомления, когда система имитирует цвет. Кроме того, приложение не может изменять или изменять алгоритм дизеринга драйвера устройства. Однако приложение может обойти алгоритм путем создания и использования шаблонных кистей. Таким образом, приложение создает собственные цвета, объединяя сплошные цвета в растровом рисунке, которое оно использует для создания кисти.