Compartir a través de


Aproximaciones de color y dithering

Aunque una aplicación puede usar el color sin tener en cuenta las capacidades de color del dispositivo, la salida resultante puede no ser tan informativa y agradable como salida para la que se elige cuidadosamente el color. Algunos dispositivos, si los hay, garantizan una coincidencia exacta para cada valor de color posible; Por lo tanto, si una aplicación solicita un color que el dispositivo no puede generar, el sistema aproxima ese color mediante un color que el dispositivo puede generar. Por ejemplo, si una aplicación intenta crear un lápiz rojo para una impresora negra y blanca, recibirá un lápiz negro en su lugar, el sistema usa negro como aproximación para rojo.

Una aplicación puede detectar si el sistema aproximará un color determinado mediante la función GetNearestColor . La función toma un valor de color y devuelve el valor de color del color coincidente más cercano que puede generar el dispositivo. El método que usa el sistema para determinar esta aproximación depende del controlador del dispositivo y de sus capacidades de color. En la mayoría de los casos, la intensidad general del color aproximado es más cercana a la del color solicitado.

Cuando una aplicación crea un lápiz o establece el color del texto, el sistema siempre aproxima un color si no existe ninguna coincidencia exacta. Cuando una aplicación crea un pincel sólido, el sistema puede intentar simular el color solicitado mediante la dithering. La dithering simula un color alternando dos o más colores en un patrón. Por ejemplo, se pueden simular diferentes tonos de rosa alternando diferentes combinaciones de rojo y blanco. Dependiendo de los colores y del patrón, la dithering puede producir simulaciones razonables. Es más útil para dispositivos monocromáticos, ya que expande el número de "colores" disponibles más allá del blanco y negro simple.

El método usado para crear colores dithered depende del controlador del dispositivo. La mayoría de los controladores de dispositivos usan un algoritmo de dithering estándar, que genera un patrón basado en los valores de intensidad de los colores rojo, verde y azul solicitados. En general, cualquier color solicitado que no pueda generar el dispositivo está sujeto a simulación, pero no se notifica a una aplicación cuando el sistema simula un color. Además, una aplicación no puede modificar ni cambiar el algoritmo de dithering del controlador de dispositivo. Sin embargo, una aplicación puede omitir el algoritmo mediante la creación y el uso de pinceles de patrón. De esta manera, la aplicación crea sus propios colores ditherados mediante la combinación de colores sólidos en el mapa de bits que usa para crear el pincel.