Partager via


Opérations raster binaires

Cette section répertorie les codes d’opération raster binaire utilisés par les fonctions GetROP2 et SetROP2 . Les codes d’opération raster définissent la façon dont GDI combine les bits du stylet sélectionné avec les bits de la bitmap de destination.

Chaque code d’opération raster représente une opération booléenne dans laquelle les valeurs des pixels du stylet sélectionné et de l’image bitmap de destination sont combinées. Voici les deux opérandes utilisés dans ces opérations.

Opérande Signification
P Stylet sélectionné
D Bitmap de destination

 

Voici les opérateurs booléens utilisés dans ces opérations.

Opérateur Signification
a ET au niveau du bit
n Not au niveau du bit (inverse)
o Opération de bits OR
x OR exclusif au niveau du bit (XOR)

 

Toutes les opérations booléennes sont présentées en notation polonaise inversée. Par exemple, l’opération suivante remplace les valeurs des pixels dans l’image bitmap de destination par une combinaison des valeurs de pixels du stylet et du pinceau sélectionné :

DPo 

Chaque code d’opération raster est un entier 32 bits dont le mot d’ordre élevé est un index d’opération booléen et dont le mot d’ordre inférieur est le code d’opération. L’index d’opération 16 bits est une valeur 8 bits sans extension qui représente tous les résultats possibles résultant de l’opération booléenne sur deux paramètres (dans ce cas, les valeurs de stylet et de destination). Par exemple, les index d’opération pour les opérations DPo et DPan sont affichés dans la liste suivante.

P D DPO Dpan
0 0 0 1
0 1 1 1
1 0 1 1
1 1 1 0

 

La liste suivante présente les modes de dessin et les opérations booléennes qu’ils représentent.

Opération raster Opération booléenne
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 Nom unique
R2_NOTCOPYPEN Pn
R2_NOTMASKPEN DPan
R2_NOTMERGEPEN DPon
R2_NOTXORPEN DPxn
R2_WHITE 1
R2_XORPEN Dpx

 

Pour un appareil monochrome, GDI mappe la valeur zéro au noir et la valeur 1 au blanc. Si une application tente de dessiner avec un stylet noir sur une destination blanche à l’aide des opérations raster binaires disponibles, les résultats suivants se produisent.

Opération raster Résultats
R2_BLACK Ligne noire visible
R2_COPYPEN Ligne noire visible
R2_MASKNOTPEN Aucune ligne visible
R2_MASKPEN Ligne noire visible
R2_MASKPENNOT Ligne noire visible
R2_MERGENOTPEN Aucune ligne visible
R2_MERGEPEN Ligne noire visible
R2_MERGEPENNOT Ligne noire visible
R2_NOP Aucune ligne visible
R2_NOT Ligne noire visible
R2_NOTCOPYPEN Aucune ligne visible
R2_NOTMASKPEN Aucune ligne visible
R2_NOTMERGEPEN Ligne noire visible
R2_NOTXORPEN Ligne noire visible
R2_WHITE Aucune ligne visible
R2_XORPEN Aucune ligne visible

 

Pour un appareil couleur, GDI utilise des valeurs RVB pour représenter les couleurs du stylet et de la destination. Une valeur de couleur RVB est un entier long qui contient un champ de couleur rouge, vert et bleu, chacun spécifiant l’intensité de la couleur spécifiée. Les intensités vont de 0 à 255. Les valeurs sont empaquetées dans les trois octets d’ordre inférieur de l’entier long. La couleur d’un stylet est toujours une couleur unie, mais la couleur de la destination peut être un mélange de deux ou trois couleurs. Si une application tente de dessiner avec un stylet blanc sur une destination bleue à l’aide des opérations raster binaires disponibles, les résultats suivants se produisent.

Opération raster Résultats
R2_BLACK Ligne noire visible
R2_COPYPEN Ligne blanche visible
R2_MASKNOTPEN Ligne noire visible
R2_MASKPEN Ligne bleue invisible
R2_MASKPENNOT Ligne rouge/vert visible
R2_MERGENOTPEN Ligne bleue invisible
R2_MERGEPEN Ligne blanche visible
R2_MERGEPENNOT Ligne blanche visible
R2_NOP Ligne bleue invisible
R2_NOT Ligne rouge/vert visible
R2_NOTCOPYPEN Ligne noire visible
R2_NOTMASKPEN Ligne rouge/vert visible
R2_NOTMERGEPEN Ligne noire visible
R2_NOTXORPEN Ligne bleue invisible
R2_WHITE Ligne blanche visible
R2_XORPEN Ligne rouge/vert visible