三元光栅操作码

三元光栅操作码
作用:
按照不同的方式处理三种像素。

当前填充像素
源像素
屏幕像素
三元指的就是这三种了

数据组成
三元光栅操作码是 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。运算之后得到原来的像素点!。利用这两次运算我们就可以让原来的像素颜色保持不变。如果我们对背景图片(屏幕像素)进行这样的两次运算,第一次运算源图为白(第一个像素点为:白色),第二次运算原图为黑(第二个像素点为:黑),那么就可以保持背景图片不变。

如果两次运算的原图只是背景色为白,黑,而图片当中还有其他的颜色像素点(如果两张原图的其他颜色的像素点位置,颜色一致的话),运算结果则是:其他颜色的像素点会覆盖在屏幕图片上。这样就起到了”设置背景图片”的功能
 

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