Aproximações e dithering de cores
Embora um aplicativo possa usar cores sem considerar os recursos de cor do dispositivo, a saída resultante pode não ser tão informativa e agradável quanto a saída para a qual a cor é cuidadosamente escolhida. Poucos, se houver, dispositivos garantem uma correspondência exata para cada valor de cor possível; portanto, se um aplicativo solicitar uma cor que o dispositivo não possa gerar, o sistema aproximará essa cor usando uma cor que o dispositivo pode gerar. Por exemplo, se um aplicativo tentar criar uma caneta vermelha para uma impressora preta e branca, ele receberá uma caneta preta, em vez disso, o sistema usará preto como aproximação para vermelho.
Um aplicativo pode descobrir se o sistema aproximará uma determinada cor usando a função GetNearestColor . A função usa um valor de cor e retorna o valor de cor da cor correspondente mais próxima que o dispositivo pode gerar. O método que o sistema usa para determinar essa aproximação depende do driver do dispositivo e de suas funcionalidades de cor. Na maioria dos casos, a intensidade geral da cor aproximada é mais próxima da cor solicitada.
Quando um aplicativo cria uma caneta ou define a cor do texto, o sistema sempre aproxima uma cor se não houver correspondência exata. Quando um aplicativo cria um pincel sólido, o sistema pode tentar simular a cor solicitada dithering. O dithering simula uma cor alternando duas ou mais cores em um padrão. Por exemplo, diferentes tons de rosa podem ser simulados alternando diferentes combinações de vermelho e branco. Dependendo das cores e do padrão, o dithering pode produzir simulações razoáveis. Ele é mais útil para dispositivos monocromáticos, pois expande o número de "cores" disponíveis muito além do simples preto e branco.
O método usado para criar cores dithered depende do driver do dispositivo. A maioria dos drivers de dispositivo usa um algoritmo de dithering padrão, que gera um padrão com base nos valores de intensidade das cores vermelha, verde e azul solicitadas. Em geral, qualquer cor solicitada que não possa ser gerada pelo dispositivo está sujeita à simulação, mas um aplicativo não é notificado quando o sistema simula uma cor. Além disso, um aplicativo não pode modificar ou alterar o algoritmo de dithering do driver de dispositivo. Um aplicativo, no entanto, pode ignorar o algoritmo criando e usando pincéis de padrão. Dessa forma, o aplicativo cria suas próprias cores dithered combinando cores sólidas no bitmap que ele usa para criar o pincel.