Sdílet prostřednictvím


Binární rastrové operace

V této části jsou uvedeny binární rastrové operace kódy používané funkcemi GetROP2 a SetROP2. Raster-operation codes define how GDI combines the bits from the selected pen with the bits in the destination bitmap.

Každý rastrový kód operace představuje logickou operaci, ve které se kombinují hodnoty pixelů ve vybraném peru a cílovém rastrovém obrázku. Následují dva operandy používané v těchto operacích.

Operand Význam
P Vybrané pero
D Cílový rastrový obrázek

 

Následují logické operátory používané v těchto operacích.

Operátor Význam
a Bitový operátor AND
n Bitové NE (inverzní)
o Bitový operátor OR
x Bitový exkluzivní OR (XOR)

 

Všechny logické operace jsou uvedeny v zpětném polském zápisu. Například následující operace nahradí hodnoty pixelů v cílovém rastrovém obrázku kombinací hodnot pixelů pera a vybraného štětce:

DPo 

Každý raster-operation code je 32bitové celé číslo, jehož slovo s vysokým pořadím je logický index operací a jehož slovo s nízkým pořadím je kód operace. 16bitový index operace je 8bitová hodnota s nulovou rozšířenou 8bitovou hodnotou, která představuje všechny možné výsledky vyplývající z logické operace na dvou parametrech (v tomto případě pero a cílové hodnoty). Například indexy operací pro operace DPo a DPan jsou zobrazeny v následujícím seznamu.

P D DPo Podokno
0 0 0 1
0 1 1 1
1 0 1 1
1 1 1 0

 

Následující seznam popisuje režimy výkresu a logické operace, které představují.

Rastrová operace Logická operace
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

 

U monochromatického zařízení GDI mapuje hodnotu nula na černou a hodnotu 1 na bílou. Pokud se aplikace pokusí nakreslit pomocí černého pera na bílém cíli pomocí dostupných binárních rastrových operací, dojde k následujícím výsledkům.

Rastrová operace Výsledek
R2_BLACK Viditelná černá čára
R2_COPYPEN Viditelná černá čára
R2_MASKNOTPEN Žádná viditelná čára
R2_MASKPEN Viditelná černá čára
R2_MASKPENNOT Viditelná černá čára
R2_MERGENOTPEN Žádná viditelná čára
R2_MERGEPEN Viditelná černá čára
R2_MERGEPENNOT Viditelná černá čára
R2_NOP Žádná viditelná čára
R2_NOT Viditelná černá čára
R2_NOTCOPYPEN Žádná viditelná čára
R2_NOTMASKPEN Žádná viditelná čára
R2_NOTMERGEPEN Viditelná černá čára
R2_NOTXORPEN Viditelná černá čára
R2_WHITE Žádná viditelná čára
R2_XORPEN Žádná viditelná čára

 

U barevného zařízení používá GDI hodnoty RGB k reprezentaci barev pera a cíle. Hodnota barvy RGB je dlouhé celé číslo, které obsahuje červené, zelené a modré barevné pole, přičemž každá určuje intenzitu zadané barvy. Intenzity jsou v rozsahu od 0 do 255. Hodnoty se zabalí do tří bajtů s nízkým pořadím dlouhého celého čísla. Barva pera je vždy plná barva, ale barva cíle může být kombinací jakékoli dvě nebo tři barvy. Pokud se aplikace pokusí nakreslit pomocí bílého pera do modrého cíle pomocí dostupných binárních rastrových operací, dojde k následujícím výsledkům.

Rastrová operace Výsledek
R2_BLACK Viditelná černá čára
R2_COPYPEN Viditelná bílá čára
R2_MASKNOTPEN Viditelná černá čára
R2_MASKPEN Neviditelná modrá čára
R2_MASKPENNOT Viditelná červená/zelená čára
R2_MERGENOTPEN Neviditelná modrá čára
R2_MERGEPEN Viditelná bílá čára
R2_MERGEPENNOT Viditelná bílá čára
R2_NOP Neviditelná modrá čára
R2_NOT Viditelná červená/zelená čára
R2_NOTCOPYPEN Viditelná černá čára
R2_NOTMASKPEN Viditelná červená/zelená čára
R2_NOTMERGEPEN Viditelná černá čára
R2_NOTXORPEN Neviditelná modrá čára
R2_WHITE Viditelná bílá čára
R2_XORPEN Viditelná červená/zelená čára