Udostępnij za pośrednictwem


Operacje rasterów binarnych

W tej sekcji wymieniono binarne kody operacji raster-operacji używane przez funkcje GetROP2 i SetROP2. Kody operacji raster-definiują sposób, w jaki GDI łączy bity z wybranego pióra z bitami w docelowej mapie bitowej.

Każdy kod operacji raster-operation reprezentuje operację logiczną, w której są łączone wartości pikseli w wybranym piórze i docelowej mapie bitowej. Poniżej przedstawiono dwa operandy używane w tych operacjach.

Operand Znaczenie
P Wybrane pióro
D Docelowa mapa bitowa

 

Operatory logiczne używane w tych operacjach są zgodne.

Operator Znaczenie
a Bitowe I
n Bitowa NOT (odwrotna)
o Bitowe OR
x Bitowe wyłączne OR (XOR)

 

Wszystkie operacje logiczne są prezentowane w odwrotnej notacji polskiej. Na przykład następująca operacja zastępuje wartości pikseli w docelowej mapie bitowej kombinacją wartości pikseli pióra i wybranego pędzla:

DPo 

Każdy kod operacji raster-operation jest 32-bitową liczbą całkowitą, której wyraz o wysokiej kolejności jest indeksem operacji logicznej i którego wyraz o niskiej kolejności jest kodem operacji. Indeks operacji 16-bitowej to wartość 8-bitowa, która reprezentuje wszystkie możliwe wyniki wynikające z operacji logicznej na dwóch parametrach (w tym przypadku wartości pióra i miejsca docelowego). Na przykład indeksy operacji dla operacji DPo i DPan są wyświetlane na poniższej liście.

P D DPo Dpan
0 0 0 1
0 1 1 1
1 0 1 1
1 1 1 0

 

Na poniższej liście przedstawiono tryby rysunku i operacje logiczne, które reprezentują.

Operacja rasterowa Operacja logiczna
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

 

W przypadku urządzenia monochromatycznego interfejs GDI mapuje wartość zero na czarną, a wartość 1 na białą. Jeśli aplikacja próbuje narysować pióro w białym miejscu docelowym przy użyciu dostępnych operacji rasterów binarnych, wystąpią następujące wyniki.

Operacja rasterowa Wynik
R2_BLACK Widoczna linia
R2_COPYPEN Widoczna linia
R2_MASKNOTPEN Brak widocznej linii
R2_MASKPEN Widoczna linia
R2_MASKPENNOT Widoczna linia
R2_MERGENOTPEN Brak widocznej linii
R2_MERGEPEN Widoczna linia
R2_MERGEPENNOT Widoczna linia
R2_NOP Brak widocznej linii
R2_NOT Widoczna linia
R2_NOTCOPYPEN Brak widocznej linii
R2_NOTMASKPEN Brak widocznej linii
R2_NOTMERGEPEN Widoczna linia
R2_NOTXORPEN Widoczna linia
R2_WHITE Brak widocznej linii
R2_XORPEN Brak widocznej linii

 

W przypadku urządzenia kolorowego GDI używa wartości RGB do reprezentowania kolorów pióra i miejsca docelowego. Wartość koloru RGB to długa liczba całkowita zawierająca kolor czerwony, zielony i niebieskie pole koloru, z których każda określa intensywność określonego koloru. Wzrost waha się od 0 do 255. Wartości są pakowane w trzech bajtach o niskiej kolejności od długiej liczby całkowitej. Kolor pióra jest zawsze stałym kolorem, ale kolor miejsca docelowego może być mieszanką dowolnych dwóch lub trzech kolorów. Jeśli aplikacja próbuje rysować z białym piórem na niebieskim miejscu docelowym przy użyciu dostępnych operacji rasterów binarnych, wystąpią następujące wyniki.

Operacja rasterowa Wynik
R2_BLACK Widoczna linia
R2_COPYPEN Widoczna biała linia
R2_MASKNOTPEN Widoczna linia
R2_MASKPEN Niewidoczna niebieska linia
R2_MASKPENNOT Widoczna czerwona/zielona linia
R2_MERGENOTPEN Niewidoczna niebieska linia
R2_MERGEPEN Widoczna biała linia
R2_MERGEPENNOT Widoczna biała linia
R2_NOP Niewidoczna niebieska linia
R2_NOT Widoczna czerwona/zielona linia
R2_NOTCOPYPEN Widoczna linia
R2_NOTMASKPEN Widoczna czerwona/zielona linia
R2_NOTMERGEPEN Widoczna linia
R2_NOTXORPEN Niewidoczna niebieska linia
R2_WHITE Widoczna biała linia
R2_XORPEN Widoczna czerwona/zielona linia