Binäre Rastervorgänge
In diesem Abschnitt werden die binären Rastervorgangscodes aufgeführt, die von den funktionen GetROP2 und SetROP2- verwendet werden. Rasteroperationscodes definieren, wie GDI die Bits vom ausgewählten Stift mit den Bits in der Zielbitmap kombiniert.
Jeder Rastervorgangscode stellt einen booleschen Vorgang dar, in dem die Werte der Pixel im ausgewählten Stift und der Zielbitmap kombiniert werden. Im Folgenden sind die beiden Operanden aufgeführt, die in diesen Vorgängen verwendet werden.
Operand | Bedeutung |
---|---|
P | Ausgewählter Stift |
D | Zielbitmap |
Die booleschen Operatoren, die in diesen Vorgängen verwendet werden, folgen.
Operator | Bedeutung |
---|---|
ein | Bitweise UND |
n | Bitweise NICHT (umgekehrt) |
o | Bitweise ODER |
x | Bitweise exklusiv ODER (XOR) |
Alle booleschen Vorgänge werden in umgekehrter polnischer Schreibweise dargestellt. Der folgende Vorgang ersetzt beispielsweise die Werte der Pixel in der Zielbitmap durch eine Kombination der Pixelwerte des Stifts und des ausgewählten Pinsels:
DPo
Jeder Rastervorgangscode ist eine 32-Bit-Ganzzahl, deren hochgeordnetes Wort ein boolescher Vorgangsindex ist und dessen Wort mit niedriger Reihenfolge der Vorgangscode ist. Der 16-Bit-Vorgangsindex ist ein null erweiterter 8-Bit-Wert, der alle möglichen Ergebnisse darstellt, die sich aus dem booleschen Vorgang für zwei Parameter ergeben (in diesem Fall die Stift- und Zielwerte). Beispielsweise werden die Vorgangsindizes für die DPo- und DPan-Vorgänge in der folgenden Liste angezeigt.
P | D | DPo | 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 | 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 |
Bei einem monochromen Gerät ordnet GDI den Wert Null schwarz und den Wert 1 zu weiß zu. Wenn eine Anwendung versucht, mit einem schwarzen Stift auf einem weißen Ziel zu zeichnen, indem die verfügbaren binären Rastervorgänge verwendet werden, 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, wobei jede die Intensität der angegebenen Farbe angibt. Die Intensitäten reichen von 0 bis 255. Die Werte werden in den drei Byte der langen ganzzahligen Reihenfolge 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 einem blauen 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 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 |