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 |