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 |