三元光柵操作碼

三元光柵操作碼
作用:
按照不同的方式處理三種像素。

當前填充像素
源像素
屏幕像素
三元指的就是這三種了

數據組成
三元光柵操作碼是 int32 類型,其高位字是布爾操作索引,低位字是操作碼。布爾操作索引的 16 個位中,高 8 位用 0 填充,低 8 位是當前填充顏色、源圖像和屏幕的布爾操作結果。

原理
對像素點的數值(二進制)進行布爾操作,來處理圖像。並不是每一次的操作都需要三種像素。根據操作碼來決定處理的像素和布爾操作類型

實例
逆波蘭表達式
一種運算表達式,將正常的表達式轉換爲逆波蘭表達式之後,可以不需要考慮優先級,而只需要按照規則從左向右計算。比如說(3+4)*2轉換後可以變成:2 3 4 + * (這只是一種表達式,它也可以表示成:3 4 + 2 *)。遇到數字,就將數字放在棧中。當遇到n元運算符就將n個數字從棧頂取出,就結果放入棧頂。

像素
D 代指:屏幕像素
P 代指:當前填充像素
S 代指:源像素
布爾運算
a 代指:AND “與”
n 代指:NOT “取反”
o 代指:OR “或”
x 代指:XOR “異或”
比如說DPa,意思是:將屏幕像素數值的二進制代碼和當前填充像素數值的二進制代碼進行“與”運算

下面我們來看看一個例子(二元運算)

屏幕像素點的R值:11110010
第一個源像素點的R值:11111111
第二個源像素點的R值:00000000
先進行DSa運算(s指第一個像素點),得到11110010,在進行DSx運算(s指向第二個像素點),得到11110010。運算之後得到原來的像素點!。利用這兩次運算我們就可以讓原來的像素顏色保持不變。如果我們對背景圖片(屏幕像素)進行這樣的兩次運算,第一次運算源圖爲白(第一個像素點爲:白色),第二次運算原圖爲黑(第二個像素點爲:黑),那麼就可以保持背景圖片不變。

如果兩次運算的原圖只是背景色爲白,黑,而圖片當中還有其他的顏色像素點(如果兩張原圖的其他顏色的像素點位置,顏色一致的話),運算結果則是:其他顏色的像素點會覆蓋在屏幕圖片上。這樣就起到了”設置背景圖片”的功能
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章