勇芳软件工作室.汉化:  Painting and Drawing > Raster Operation Codes >

Binary Raster Operations

Previous pageReturn to chapter overviewNext page

本节列出了GetROP2SetROP2功能使用的二进制栅格操作代码。栅格操作代码定义了GDI如何将所选笔的位与目标位图中的位组合。

 

每个光栅操作代码表示一个布尔运算,其中组合所选笔和目标位图中的像素的值。以下是这些操作中使用的两个操作数。

 

操作数

含义

P

选笔

D

选笔

 

这些操作中使用的布尔运算符如下。

 

操作者

含义

a

按位AND

n

按位NOT(反)

o

按位OR

x

按位异或(XOR)

 

所有布尔运算都以相反的波兰符号表示。例如,以下操作用笔和所选画笔的像素值的组合替换目标位图中的像素的值:

 

DPo

 

每个光栅操作代码是一个32位整数,其高位字是布尔运算索引,低位字是操作码。16位操作索引是一个零扩展的8位值,表示对两个参数(在这种情况下,笔和目标值)的布尔运算产生的所有可能结果。例如,DPo和DPan操作的操作指标如下列表所示。

 

P

D

DPo

DPAN

0

0

0

1

0

1

1

1

1

0

1

1

1

1

1

0

 

以下列表概述了它们所代表的绘图模式和布尔运算。

 

光栅操作

布尔运算

R2_BLACK

0

R2_COPYPEN

P

R2_MASKNOTPEN

DPna

R2_MASKPEN

DPa

R2_MASKPENNOT

PDna

R2_MERGENOTPEN

DPno

R2_MERGEPEN

DPo

R2_MERGEPENNOT

PDno

R2_NOP

D

R2_NOT

Dn

R2_NOTCOPYPEN

Pn

R2_NOTMASKPEN

DPan

R2_NOTMERGEPEN

DPon

R2_NOTXORPEN

DPxn

R2_WHITE

1

R2_XORPEN

DPx

 

对于单色设备,GDI将零值映射为黑色,将值1设置为白色。如果应用程序尝试使用可用的二进制栅格操作在黑色目标上绘制黑色笔,则会发生以下结果。

 

光栅操作

结果

R2_BLACK

可见黑线

R2_COPYPEN

可见黑线

R2_MASKNOTPEN

没有可见的行

R2_MASKPEN

可见黑线

R2_MASKPENNOT

可见黑线

R2_MERGENOTPEN

没有可见的行

R2_MERGEPEN

可见黑线

R2_MERGEPENNOT

可见黑线

R2_NOP

没有可见的行

R2_NOT

可见黑线

R2_NOTCOPYPEN

没有可见的行

R2_NOTMASKPEN

没有可见的行

R2_NOTMERGEPEN

可见黑线

R2_NOTXORPEN

可见黑线

R2_WHITE

没有可见的行

R2_XORPEN

没有可见的行

 

对于彩色设备,GDI使用RGB值来表示笔和目的地的颜色。RGB颜色值是包含红色,绿色和蓝色颜色字段的长整数,每个字段指定指定颜色的强度。强度范围从0到255。这些值被打包在长整数的三个低位字节中。笔的颜色始终是纯色,但目的地的颜色可以是任何两种或三种颜色的混合。如果应用程序尝试使用可用的二进制栅格操作在蓝色目标上绘制白色笔,则会发生以下结果。

 

光栅操作

结果

R2_BLACK

可见黑线

R2_COPYPEN

可见白线

R2_MASKNOTPEN

可见黑线

R2_MASKPEN

隐形蓝线

R2_MASKPENNOT

可见红/绿线

R2_MERGENOTPEN

隐形蓝线

R2_MERGEPEN

可见白线

R2_MERGEPENNOT

可见白线

R2_NOP

隐形蓝线

R2_NOT

可见红/绿线

R2_NOTCOPYPEN

可见黑线

R2_NOTMASKPEN

可见红/绿线

R2_NOTMERGEPEN

可见黑线

R2_NOTXORPEN

隐形蓝线

R2_WHITE

可见白线

R2_XORPEN

可见红/绿线