Welcome

首页 / 软件开发 / C++ / 三元光栅操作

三元光栅操作2008-02-26孙天胜本文列出了供BitBlt、PatBlt和StretchBlt函数使用的三元光栅操作码。三元光栅操作码定义了如何合并源位图和目的位图的位。

每一光栅操作码都提供了一个布尔操作,也就是如何合并源位图中的象素、选中的画刷和目的位图中的象素。下面是这些操作中所用到的操作对象:

操作对象

意义

D

目的位图

P

选中的画刷 (也叫模式)

S

源位图

下面是这些操作中所用到的布尔操作符:

操作符

意义

a

AND(按位与)

n

NOT(按位取反)

o

OR (按位或)

x

XOR(按位异或)

所有的布尔操作都采用逆波兰表示法。例如,下面的操作将使用源位图象素和画刷的合并来替换目的位图中的象素: PSo 下面的操作将使源位图中的象素与画刷的合并再合并上目的位图中的象素(同一功能有很多可变的拼写方法,因此,一个特殊的拼写方法可能没有罗列出来,而与之等价的一种格式可能罗列出来了): DPSoo 每一光栅操作码是一32位整数,其高位字(high-order word)是布尔操作索引,其低位字(low-order word)是操作码。16位的操作索引从0开始,8位值表示预定画刷、源位图和目的位图进行布尔操作的结果。例如,PSo和DPSoo的操作索引如下:

P

S

D

PSo

DPSoo

0

0

0

0

0

0

0

1

0

1

0

1

0

1

1

0

1

1

1

1

1

0

0

1

1

1

0

1

1

1

1

1

0

1

1

1

1

1

1

1

操作索引:

  00FCh

00FEh