三元光栅操作码

三元光栅操作码

作用:

按照不同的方式处理三种像素。

  • 当前填充像素
  • 源像素
  • 屏幕像素

三元指的就是这三种了

数据组成

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

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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值