首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

三元光柵操作碼完整參考表與運算原理解析

     編輯:關於VC++

什麼是三元光柵操作?

三元光柵操作(Ternary Raster Operations,ROP3)定義了 BitBlt、PatBlt、StretchBlt 等 GDI 函數在繪圖時,如何結合來源點陣圖、選取畫刷(模式)與目的點陣圖三者的像素值。每個 ROP 碼都是一個 32 位整數,高位字為布林運算索引,低位字為操作碼。

運算元與布林運算子

符號意義
D目的點陣圖
P選取畫刷
S來源點陣圖
運算子意義
aAND(按位與)
nNOT(按位取反)
oOR(按位或)
xXOR(按位異或)

所有布林運算採用逆波蘭表示法(後序表示法)。例如 PSo 表示 (P OR S),DPSoo 表示 ((D OR P) OR S)。

運算索引計算範例

以 3 輸入真值表(P、S、D 各 0/1)共 8 種組合,依序產出結果位,組成 8 位元索引值:

  • PSo 索引 = 00FCh(第 252 行)
  • DPSoo 索引 = 00FEh(第 254 行)

常用 ROP 碼對照表(節錄)

十六進制ROP 碼布林運算式常用名稱說明
00000000420BLACKNESS目的設為黑色
11001100A6DSonNOTSRCERASE目的 = NOT (目的 OR 來源)
3300330008SnNOTSRCCOPY目的 = NOT 來源
5500550009DnDSTINVERT目的 = NOT 目的
5A005A0049DPxPATINVERT目的 = 目的 XOR 畫刷
6600660046DSxSRCINVERT目的 = 目的 XOR 來源
88008800C6DSaSRCAND目的 = 目的 AND 來源
CC00CC0020SSRCCOPY目的 = 來源(直接複製)
EE00EE0086DSoSRCPAINT目的 = 目的 OR 來源
F000F00021PPATCOPY目的 = 畫刷
FF00FF00621WHITENESS目的設為白色

開發建議

  • 優先使用 WINDOWS.H 定義的常用名稱(如 SRCCOPY),提高程式碼可讀性
  • 單色點陣圖中位值 0 為黑、1 為白;彩色時對應 RGB 值
  • 完整 256 碼表請參考 MSDN 或 SDK 文件
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved