Freigeben über


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