Vorgänge für binäre Raster
In diesem Abschnitt werden die binären Rastervorgangscodes aufgelistet, die von den Funktionen GetROP2 und SetROP2 verwendet werden. Rastervorgangscodes definieren, wie GDI die Bits aus dem ausgewählten Stift mit den Bits in der Zielbitbits kombiniert.
Jeder Rastervorgangscode stellt einen booleschen Vorgang dar, bei dem die Werte der Pixel im ausgewählten Stift und der Zielbitbit kombiniert werden. Im Folgenden werden die beiden Operanden aufgeführt, die in diesen Vorgängen verwendet werden.
Operand | Bedeutung |
---|---|
P | Ausgewählter Stift |
D | Bitmap des Ziels |
Die booleschen Operatoren, die in diesen Vorgängen verwendet werden, folgen.
Operator | Bedeutung |
---|---|
a | Bitweises AND |
n | Bitweise NOT (umgekehrt) |
o | Bitweises OR |
x | Bitweise exklusive OR (XOR) |
Alle booleschen Vorgänge werden in umgekehrter polnischer Notation dargestellt. Der folgende Vorgang ersetzt beispielsweise die Werte der Pixel in der Zielbitbit durch eine Kombination der Pixelwerte des Stifts und des ausgewählten Pinsels:
DPo
Jeder Rastervorgangscode ist eine ganze 32-Bit-Zahl, deren Wort mit hoher Reihenfolge ein boolescher Vorgangsindex ist und dessen Wort mit niedriger Reihenfolge der Vorgangscode ist. Der 16-Bit-Vorgangsindex ist ein erweiterter 8-Bit-Wert mit Null, der alle möglichen Ergebnisse darstellt, die sich aus dem booleschen Vorgang für zwei Parameter (in diesem Fall die Stift- und Zielwerte) ergeben. Beispielsweise werden die Vorgangsindizes für die Vorgänge DPo und DPan in der folgenden Liste angezeigt.
P | D | Dsb | Dpan |
---|---|---|---|
0 | 0 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 |
In der folgenden Liste werden die Zeichnungsmodi und die booleschen Vorgänge beschrieben, die sie darstellen.
Rastervorgang | Boolescher Vorgang |
---|---|
R2_BLACK | 0 |
R2_COPYPEN | P |
R2_MASKNOTPEN | DPna |
R2_MASKPEN | Dpa |
R2_MASKPENNOT | PDna |
R2_MERGENOTPEN | DPno |
R2_MERGEPEN | Dsb |
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 |
Bei einem monochromen Gerät ordnet GDI den Wert null schwarz und den Wert 1 weiß zu. Wenn eine Anwendung versucht, mit einem schwarzen Stift auf einem weißen Ziel mit den verfügbaren binären Rastervorgängen zu zeichnen, treten die folgenden Ergebnisse auf.
Rastervorgang | Ergebnis |
---|---|
R2_BLACK | Sichtbare schwarze Linie |
R2_COPYPEN | Sichtbare schwarze Linie |
R2_MASKNOTPEN | Keine sichtbare Linie |
R2_MASKPEN | Sichtbare schwarze Linie |
R2_MASKPENNOT | Sichtbare schwarze Linie |
R2_MERGENOTPEN | Keine sichtbare Linie |
R2_MERGEPEN | Sichtbare schwarze Linie |
R2_MERGEPENNOT | Sichtbare schwarze Linie |
R2_NOP | Keine sichtbare Linie |
R2_NOT | Sichtbare schwarze Linie |
R2_NOTCOPYPEN | Keine sichtbare Linie |
R2_NOTMASKPEN | Keine sichtbare Linie |
R2_NOTMERGEPEN | Sichtbare schwarze Linie |
R2_NOTXORPEN | Sichtbare schwarze Linie |
R2_WHITE | Keine sichtbare Linie |
R2_XORPEN | Keine sichtbare Linie |
Für ein Farbgerät verwendet GDI RGB-Werte, um die Farben des Stifts und des Ziels darzustellen. Ein RGB-Farbwert ist eine lange ganze Zahl, die ein rotes, ein grünes und ein blaues Farbfeld enthält, die jeweils die Intensität der angegebenen Farbe angeben. Die Intensitäten liegen zwischen 0 und 255. Die Werte werden in die drei Bytes mit niedriger Reihenfolge der langen Ganzzahl gepackt. Die Farbe eines Stifts ist immer eine Volltonfarbe, aber die Farbe des Ziels kann eine Mischung aus zwei oder drei Farben sein. Wenn eine Anwendung versucht, mit einem weißen Stift auf ein blaues Ziel mithilfe der verfügbaren binären Rastervorgänge zu zeichnen, treten die folgenden Ergebnisse auf.
Rastervorgang | Ergebnis |
---|---|
R2_BLACK | Sichtbare schwarze Linie |
R2_COPYPEN | Sichtbare weiße Linie |
R2_MASKNOTPEN | Sichtbare schwarze Linie |
R2_MASKPEN | Unsichtbare blaue Linie |
R2_MASKPENNOT | Sichtbare rote/grüne Linie |
R2_MERGENOTPEN | Unsichtbare blaue Linie |
R2_MERGEPEN | Sichtbare weiße Linie |
R2_MERGEPENNOT | Sichtbare weiße Linie |
R2_NOP | Unsichtbare blaue Linie |
R2_NOT | Sichtbare rote/grüne Linie |
R2_NOTCOPYPEN | Sichtbare schwarze Linie |
R2_NOTMASKPEN | Sichtbare rote/grüne Linie |
R2_NOTMERGEPEN | Sichtbare schwarze Linie |
R2_NOTXORPEN | Unsichtbare blaue Linie |
R2_WHITE | Sichtbare weiße Linie |
R2_XORPEN | Sichtbare rote/grüne Linie |