二進位點陣作業
本節列出 GetROP2 和 SetROP2 函式所使用的二進位點陣作業代碼。 點陣作業程式碼會定義 GDI 如何結合所選畫筆中的位與目的地點陣圖中的位。
每個點陣作業程式碼都代表布耳運算,其中選取的畫筆和目的地點陣圖中的圖元值會結合。 以下是這些作業中使用的兩個運算元。
運算元 | 意義 |
---|---|
P | 選取的畫筆 |
D | 目的地點陣圖 |
這些作業中使用的布林運算子遵循。
運算子 | 意義 |
---|---|
a | 位元 AND |
n | 位 NOT (反向) |
o | 位元 OR |
x | 位獨佔 OR (XOR) |
所有布耳運算都會以反向波蘭文標記法呈現。 例如,下列作業會將目的地點陣圖中的圖元值取代為畫筆和選取筆刷的圖元值組合:
DPo
每個點陣作業程式碼都是 32 位整數,其高序字是布耳運算索引,而低序字則是作業程式碼。 16 位作業索引是零延伸的 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 會將值零對應至黑色,並將值 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。 這些值會以長整數的三個低序位元組封裝。 畫筆的色彩一律是純色,但目的地的色彩可能是任兩種或三種色彩的混合。 如果應用程式嘗試使用可用的二進位點陣作業在藍色目的地上使用白色畫筆繪製,則會發生下列結果。
點陣作業 | 結果 |
---|---|
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 | 可見的紅色/綠色線條 |