バイナリ ラスター演算
このセクションでは、GetROP2 および SetROP2関数使用されるバイナリ ラスター演算コードの一覧を示します。 ラスター演算コードは、GDI が選択したペンのビットとコピー先ビットマップ内のビットを結合する方法を定義します。
各ラスター演算コードは、選択したペンのピクセルの値とコピー先ビットマップを組み合わせたブール演算を表します。 これらの演算で使用される 2 つのオペランドを次に示します。
オペランド | 意味 |
---|---|
P | 選択したペン |
D | コピー先ビットマップ |
これらの操作で使用されるブール演算子は次のとおりです。
演算子 | 意味 |
---|---|
ある | ビットごとの AND |
n | ビットごとの NOT (逆) |
o | ビットごとの OR |
x | ビットごとの排他的 OR (XOR) |
すべてのブール演算は、逆ポーランド語表記で表示されます。 たとえば、次の操作では、コピー先ビットマップ内のピクセルの値を、ペンと選択したブラシのピクセル値の組み合わせに置き換えます。
DPo
各ラスター演算コードは、上位ワードがブール演算インデックスで、下位ワードが演算コードである 32 ビット整数です。 16 ビット演算インデックスは、2 つのパラメーター (この場合はペンと宛先の値) に対するブール演算の結果として生じる可能性のあるすべての結果を表す、0 から拡張された 8 ビット値です。 たとえば、DPo 操作と DPan 操作の操作インデックスを次の一覧に示します。
P | D | DPo | Dpan |
---|---|---|---|
0 | 0 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 |
次の一覧は、描画モードと、それらが表すブール演算の概要を示しています。
ラスター演算 | ブール演算 |
---|---|
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 |
モノクロ デバイスの場合、GDI は値 0 を黒に、値 1 を白にマップします。 アプリケーションが、使用可能なバイナリ ラスター演算を使用して白いコピー先に黒いペンで描画しようとすると、次の結果が発生します。
ラスター演算 | 結果 |
---|---|
R2_BLACK | 見える黒い線 |
R2_COPYPEN | 見える黒い線 |
R2_MASKNOTPEN | 表示線なし |
R2_MASKPEN | 見える黒い線 |
R2_MASKPENNOT | 見える黒い線 |
R2_MERGENOTPEN | 表示線なし |
R2_MERGEPEN | 見える黒い線 |
R2_MERGEPENNOT | 見える黒い線 |
R2_NOP | 表示線なし |
R2_NOT | 見える黒い線 |
R2_NOTCOPYPEN | 表示線なし |
R2_NOTMASKPEN | 表示線なし |
R2_NOTMERGEPEN | 見える黒い線 |
R2_NOTXORPEN | 見える黒い線 |
R2_WHITE | 表示線なし |
R2_XORPEN | 表示線なし |
カラー デバイスの場合、GDI は RGB 値を使用してペンとコピー先の色を表します。 RGB カラー値は、赤、緑、青の色フィールドを含む長整数で、それぞれ指定された色の強度を指定します。 強度の範囲は 0 ~ 255 です。 値は、長整数の 3 つの下位バイトにパックされます。 ペンの色は常に単色ですが、コピー先の色は任意の 2 色または 3 色の組み合わせにすることができます。 アプリケーションが、使用可能なバイナリ ラスター演算を使用して青い変換先に白いペンで描画しようとすると、次の結果が発生します。
ラスター演算 | 結果 |
---|---|
R2_BLACK | 見える黒い線 |
R2_COPYPEN | 表示される白い線 |
R2_MASKNOTPEN | 見える黒い線 |
R2_MASKPEN | 見えない青い線 |
R2_MASKPENNOT | 赤/緑の線が表示されます |
R2_MERGENOTPEN | 見えない青い線 |
R2_MERGEPEN | 表示される白い線 |
R2_MERGEPENNOT | 表示される白い線 |
R2_NOP | 見えない青い線 |
R2_NOT | 赤/緑の線が表示されます |
R2_NOTCOPYPEN | 見える黒い線 |
R2_NOTMASKPEN | 赤/緑の線が表示されます |
R2_NOTMERGEPEN | 見える黒い線 |
R2_NOTXORPEN | 見えない青い線 |
R2_WHITE | 表示される白い線 |
R2_XORPEN | 赤/緑の線が表示されます |