Compartir a través de


Operaciones de ráster binario

En esta sección se enumeran los códigos binarios de operación de trama que usan las funciones GetROP2 y SetROP2 . Los códigos de operación de trama definen cómo GDI combina los bits del lápiz seleccionado con los bits del mapa de bits de destino.

Cada código de operación ráster representa una operación booleana en la que se combinan los valores de los píxeles del lápiz seleccionado y el mapa de bits de destino. A continuación se muestran los dos operandos que se usan en estas operaciones.

Operando Significado
P Lápiz seleccionado
D Mapa de bits de destino

 

Los operadores booleanos que se usan en estas operaciones siguen.

Operator Significado
a AND bit a bit
n NOT bit a bit (inverso)
o OR bit a bit
x OR exclusivo bit a bit (XOR)

 

Todas las operaciones booleanas se presentan en notación polaca inversa. Por ejemplo, la siguiente operación reemplaza los valores de los píxeles del mapa de bits de destino por una combinación de los valores de píxeles del lápiz y el pincel seleccionado:

DPo 

Cada código de operación ráster es un entero de 32 bits cuya palabra de orden superior es un índice de operación booleano y cuya palabra de orden bajo es el código de operación. El índice de operación de 16 bits es un valor de 8 bits extendido de cero que representa todos los resultados posibles resultantes de la operación booleana en dos parámetros (en este caso, el lápiz y los valores de destino). Por ejemplo, los índices de operación para las operaciones DPo y DPan se muestran en la lista siguiente.

P D Dpo Dpan
0 0 0 1
0 1 1 1
1 0 1 1
1 1 1 0

 

En la lista siguiente se describen los modos de dibujo y las operaciones booleanas que representan.

Operación de trama Operación booleana
R2_BLACK 0
R2_COPYPEN P
R2_MASKNOTPEN DPna
R2_MASKPEN Dpa
R2_MASKPENNOT PDna
R2_MERGENOTPEN DPno
R2_MERGEPEN Dpo
R2_MERGEPENNOT PDno
R2_NOP D
R2_NOT Dn
R2_NOTCOPYPEN Pn
R2_NOTMASKPEN DPan
R2_NOTMERGEPEN DPon
R2_NOTXORPEN DPxn
R2_WHITE 1
R2_XORPEN Dpx

 

Para un dispositivo monocromo, GDI asigna el valor cero al negro y el valor 1 a blanco. Si una aplicación intenta dibujar con un lápiz negro en un destino blanco mediante las operaciones de trama binaria disponibles, se producen los resultados siguientes.

Operación de trama Resultado
R2_BLACK Línea negra visible
R2_COPYPEN Línea negra visible
R2_MASKNOTPEN Sin línea visible
R2_MASKPEN Línea negra visible
R2_MASKPENNOT Línea negra visible
R2_MERGENOTPEN Sin línea visible
R2_MERGEPEN Línea negra visible
R2_MERGEPENNOT Línea negra visible
R2_NOP Sin línea visible
R2_NOT Línea negra visible
R2_NOTCOPYPEN Sin línea visible
R2_NOTMASKPEN Sin línea visible
R2_NOTMERGEPEN Línea negra visible
R2_NOTXORPEN Línea negra visible
R2_WHITE Sin línea visible
R2_XORPEN Sin línea visible

 

Para un dispositivo de color, GDI usa valores RGB para representar los colores del lápiz y el destino. Un valor de color RGB es un entero largo que contiene un campo de color rojo, verde y azul, cada uno de los cuales especifica la intensidad del color especificado. Las intensidades van de 0 a 255. Los valores se empaquetan en los tres bytes de orden bajo del entero largo. El color de un lápiz siempre es un color sólido, pero el color del destino puede ser una mezcla de dos o tres colores. Si una aplicación intenta dibujar con un lápiz blanco en un destino azul mediante las operaciones de trama binaria disponibles, se producen los resultados siguientes.

Operación de trama Resultado
R2_BLACK Línea negra visible
R2_COPYPEN Línea blanca visible
R2_MASKNOTPEN Línea negra visible
R2_MASKPEN Línea azul invisible
R2_MASKPENNOT Línea de color rojo/verde visible
R2_MERGENOTPEN Línea azul invisible
R2_MERGEPEN Línea blanca visible
R2_MERGEPENNOT Línea blanca visible
R2_NOP Línea azul invisible
R2_NOT Línea de color rojo/verde visible
R2_NOTCOPYPEN Línea negra visible
R2_NOTMASKPEN Línea de color rojo/verde visible
R2_NOTMERGEPEN Línea negra visible
R2_NOTXORPEN Línea azul invisible
R2_WHITE Línea blanca visible
R2_XORPEN Línea de color rojo/verde visible