我是靠谱客的博主 无聊烧鹅,最近开发中收集的这篇文章主要介绍位图的光栅操作及ROP码解析(转),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

位图的光栅操作及ROP码解析

(SnowStart于2005年3月22日)

位图是windows图形编程中非常重要的一个方面。在进行普通的位图操作中,如GDI函数BitBlt,StretchBlt, StretchDIBits,都会用到一个光栅操作码,即ROP码,像SRCCOPY,PATPAINT,SRCAND等,由于最近在开发图形驱动,涉及了许多的ROP2,ROP3和ROP4码的操作,对ROP码进行了深入的研究,以下详细介绍之以和大家分享。

 

 

二元光栅操作:我们在使用GDI画线和填充区域时,GDI使用二元光栅操作码ROP2组合画笔或画刷像素和目标像素以得到新的目标像素。如SetROP2函数和GetROP2函数支持16种二元光栅操作,如:(具体见wingdi.h)

#define R2_NOT              6   // Dn

#define R2_XORPEN           7   // DPx

三元光栅操作:对于图像有同样的光栅操作用于生成各种特殊效果,我们要处理的有三种像素,源图像像素、目标图像像素和画刷像素(模板图像像素),称之为三元光栅操作,使用的是ROP3码,如:(更多的参见wingdi.h)

#define SRCPAINT (DWORD)0x00EE0086 // dest = source OR dest          

#define SRCAND   (DWORD)0x008800C6 // dest = source AND dest         

四元光栅操作:是混合了源图像像素,目标图像像素和模板画刷像素外,又增加了一个掩码位图,用到4个变量形成了四元光栅操作,相应的为ROP4码,GDI函数中MaskBlt函数使用的是ROP4码,也是唯一接受四元光栅操作的API函数

光栅操作的编码:

 

 

一个字节可以编码256种光栅操作,假定P为画笔或画刷的位,S为源图像的位,D为目标图像的位。如果操作的结果和P一样,编码为0xF0,如果操作的结果和S一样,编码为0xCC,如果操作的结果和D一样,编码为0xAA。

Const BYTE rop_P  =0xF0; // 1 1 1 1 0 0 0 0

Const BYTE rop_S  =0xCC; // 1 1 0 0 1 1 0 0

Const BYTE rop_D  =0xAA; // 1 0 1 0 1 0 1 0

所有其他的光栅操作可以基于这三个常量的布尔操作,如定义源图像S和画刷P的逻辑与AND,计算rop_S&rop_P=0xC0即可

GDI中光栅操作实际上使用32位的DWORD编码的,而不是简单的0-255单个字节编码,双字节中高8位表示上述的256种单字节光栅操作编码的一种,低字节16位定义了光栅操作的运算式的编码。

低字节16位被分成两部分:操作符和操作数,具体如下:

低字节高11位表示操作符

 

 

两位表示一个逻辑操作(00-NOT,01-XOR,10-OR,11-AND),共5种逻辑操作,剩下一位表示最后的操作是否为NOT操作

低字节低5位表示操作数

 

 

前3位指定分析串,后2位指定分析串的偏移(8种分析串如下)

000:SPDDDDDD

001:SPDSPDSP

010:SDPSDPSD

011:DDDDDDDD

100:DDDDDDDD

101:S+SP-DSS

110:S+SP-PDS

111:S+SD-PDS

分析串中的“+”和“-”被称为特殊操作数。在256种光栅操作中有16种复杂的操作无法用单个累加器的机制表示,需要临时存储操作数,“+”表示压入堆栈,“-”表示出栈,且是成对出现的,

注意:分析串读时要从后往前读,移位时也是往前移的

 

 

 

 

Op5

 

Op4

 

Op3

 

Op2

 

Op1

 

Not

 

分析串

 

偏移

 

图1.编码光栅运算式(光栅编码的低16位)

举例说明:如光栅操作编码为0x00E20746,低位字节为0x0746,二进制为0000 0111 0100 0110

显然Op5=NOT,Op4=NOT,Op3=XOR,Op2=AND,Op1=XOR,而Not=0表示不需要额外的NOT;

分析串=001移位=2,实际串为SPDSPDSP左移位2个符号即DSPDSPSP,Op1-Op3是二元操作符,Op4-Op5是一元操作符,所以只需4个操作数,这样分析串被截断为DSPD,光栅操作的后缀表示为DSPDxaxnm简化为DSPDxax和GDI定义的D^(S&(P^D)))是一样的

    低16位的这种编码,实际上是早期时为了节省内存和汇编代码量而设计的编码,新的GDI实现不再使用这种现在看来较慢的机制,因此通常情况下,丢掉三元光栅操作的低位字是安全的,但是很难说是否会有某个图形设备驱动去检查32位光栅操作码的每一位匹配与否,为了安全起见,当用到新的光栅操作码时,应该检查和使用整个光栅操作编码。

    三元光栅操作码只使用32位光栅码的24位。光栅操作码的高8位通常全为位0。Windows2000及以上版本,引入了两个新的标志用于控制位图传输操作CAPTUREBLT和NOMIRRORBITMAP。

    NOMIRRORBITMAP标志(0x80000000)防止位图被垂直或水平的镜像,因为源和目标矩形的轴的方向或其他方面有所不同

    CAPTUREBLT标志(0x40000000)用于重叠窗口操作。

 

 

四元光栅编码:

 

 

四元光栅操作中的第四个参与者是一个单色屏蔽位图,四元光栅代码由一个前景三元光栅代码和一个背景三元光栅代码组成。掩码像素为1时,使用前景光栅操作代码,掩码像素为0时,使用背景光栅操作代码,GDI定义了宏MAKEROP4用于将2个24位的三元光栅操作码组合成32位的四元光栅操作码ROP4。定义如下:

#define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore))

 

背景ROP索引(8位)

 

前景ROP索引(8位)

 

前景ROP公式的编码(ROP的低16位)

 

该宏取背景光栅操作码的高8位光栅操作索引,左移8位,然后和24位的前景光栅操作代码组成32位的ROP4。注意掩码在四元光栅操作中的地位和其他三个并不平等,它被限制在两个值:1(白色)和0(黑色)。不能是彩色位图,因为彩色位图可以和画刷、源及目标彩色位图组合。提供四元光栅操作的主要目的是提供简单和有效地实现透明位图的显示方法。

 

-------------------------------------------

三元光栅操作

作者 孙天胜

    本文列出了供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

 

因此, PSo的操作索引是00FC (从最底行读出); DPSoo 的操作索引是 00FE。这些值定义了相应的光栅操作码的位置,如表A.1,所示,"光栅操作码"。PSo 操作在第252 (00FCh) 行; DPSoo 操作在第254 (00FEh)行。 最常用的光栅操作已经在SDK头文件WINDOWS.H中给出指定的名字。你应该在你的程序里使用这些名字。 当源位图和目的位图是单色的时候,位值0表示黑色象素,位值1表示白色象素。当源位图和目的位图是彩色的时候,这些颜色表示RGB值。有关RGB值的详细信息,请参见RGB。

光栅操作码:

 

布尔 功能 (十六进制)

 

光栅操作 (十六进制)

 

逆波兰式的布尔功能

 

常用名称

 

描述

 

00

 

00000042

 

0

 

BLACKNESS

 

将目的设置成黑色

 

01

 

00010289

 

DPSoon

 

 

Dest=NOT ((Patten OR Src) OR Dest)

 

02

 

00020C89

 

DPSona

 

 

Dest=(NOT (Patten OR Src)) AND Dest

 

03

 

000300AA

 

PSon

 

 

Dest=NOT (Patten OR Src)

 

04

 

00040C88

 

SDPona

 

 

Dest=(NOT (Patten OR Dest)) AND Src

 

05

 

000500A9

 

DPon

 

 

Dest=NOT (Patten OR Dest)

 

06

 

00060865

 

PDSxnon

 

 

Dest=NOT ((NOT (Dest XOR Src)) OR Patten)

 

07

 

000702C5

 

PDSaon

 

 

Dest=NOT ((Dest AND Src) OR Patten)

 

08

 

00080F08

 

SDPnaa

 

 

Dest=(NOT Patten) AND Dest AND Src

 

09

 

00090245

 

PDSxon

 

 

Dest=NOT ((Dest XOR Src) OR Patten)

 

0A

 

000A0329

 

DPna

 

 

Dest=(NOT Patten) AND Dest

 

0B

 

000B0B2A

 

PSDnaon

 

 

Dest=NOT (((NOT Dest) AND Src) OR Patten)

 

0C

 

000C0324

 

SPna

 

 

Dest=(NOT Patten) AND Src

 

0D

 

000D0B25

 

PDSnaon

 

 

Dest=NOT (((NOT Src) AND Dest) OR Patten)

 

0E

 

000E08A5

 

PDSonon

 

 

Dest=NOT ((NOT (Dest OR Src)) OR Patten)

 

0F

 

000F0001

 

Pn

 

 

Dest=NOT Patten

 

10

 

00100C85

 

PDSona

 

 

Dest=(NOT (Dest OR Src)) AND Patten

 

11

 

001100A6

 

DSon

 

NOTSRCERASE

 

Dest=NOT (Dest OR Src)

 

12

 

00120868

 

SDPxnon

 

 

Dest=NOT ((NOT (Dest XOR Patten)) OR Src)

 

13

 

001302C8

 

SDPaon

 

 

Dest=NOT ((Dest AND Patten) OR Src)

 

14

 

00140869

 

DPSxnon

 

 

Dest=NOT ((NOT (Patten XOR Src)) OR Dest)

 

15

 

001502C9

 

DPSaon

 

 

Dest=NOT ((Patten AND Src) OR Dest)

 

16

 

00165CCA

 

PSDPSanaxx

 

 

Dest=(((NOT (Patten AND Src)) AND Dest) XOR Src) XOR Patten

 

17

 

00171D54

 

SSPxDSxaxn

 

 

Dest=NOT (((Src XOR Patten) AND (Dest XOR Src)) XOR Src)

 

18

 

00180D59

 

SPxPDxa

 

 

Dest=(Src XOR Patten) AND (Dest XOR Patten)

 

19

 

00191CC8

 

SDPSanaxn

 

 

Dest=NOT (((NOT (Patten AND Src)) AND Dest) XOR Src)

 

1A

 

001A06C5

 

PDSPaox

 

 

Dest=((Src AND Patten) OR Dest) XOR Patten

 

1B

 

001B0768

 

SDPSxaxn

 

 

Dest=NOT (((Patten XOR Src) AND Dest) XOR Src)

 

1C

 

001C06CA

 

PSDPaox

 

 

Dest=((Dest AND Patten) OR Src) XOR Patten

 

1D

 

001D0766

 

DSPDxaxn

 

 

Dest=NOT (((Patten XOR Dest) AND Src) XOR Dest)

 

1E

 

001E01A5

 

PDSox

 

 

Dest=(Dest OR Src) XOR Patten

 

1F

 

001F0385

 

PDSoan

 

 

Dest=NOT ((Dest OR Src) AND Patten)

 

20

 

00200F09

 

DPSnaa

 

 

Dest=(NOT Src) AND Patten AND Dest

 

21

 

00210248

 

SDPxon

 

 

Dest=NOT ((Dest XOR Patten) OR Src)

 

22

 

00220326

 

DSna

 

 

Dest=(NOT Src) AND Dest

 

23

 

00230B24

 

SPDnaon

 

 

Dest=NOT (((NOT Dest) AND Patten) OR Src)

 

24

 

00240D55

 

SPxDSxa

 

 

Dest=(Src XOR Patten) AND (Dest XOR Src)

 

25

 

00251CC5

 

PDSPanaxn

 

 

Dest=NOT (((NOT (Src AND Patten)) AND Dest) XOR Patten)

 

26

 

002606C8

 

SDPSaox

 

 

Dest=((Patten AND Src) OR Dest) XOR Src

 

27

 

00271868

 

SDPSxnox

 

 

Dest=((NOT (Patten XOR Src)) OR Dest) XOR Src

 

28

 

00280369

 

DPSxa

 

 

Dest=(Patten XOR Src) AND Dest

 

29

 

002916CA

 

PSDPSaoxxn

 

 

Dest=NOT ((((Patten AND Src) OR Dest) XOR Src) XOR Patten)

 

2A

 

002A0CC9

 

DPSana

 

 

Dest=(NOT (Patten AND Src)) AND Dest

 

2B

 

002B1D58

 

SSPxPDxaxn

 

 

Dest=NOT (((Src XOR Patten) AND (Patten XOR Dest)) XOR Src)

 

2C

 

002C0784

 

SPDSoax

 

 

Dest=((Dest OR Src) AND Patten) XOR Src

 

2D

 

002D060A

 

PSDnox

 

 

Dest=((NOT Dest) OR Src) XOR Patten

 

2E

 

002E064A

 

PSDPxox

 

 

Dest=((Dest XOR Patten) OR Src) XOR Patten

 

2F

 

002F0E2A

 

PSDnoan

 

 

Dest=NOT (((NOT Dest) OR Src) AND Patten)

 

30

 

0030032A

 

PSna

 

 

Dest=(NOT Src) AND Patten

 

31

 

00310B28

 

SDPnaon

 

 

Dest=NOT (((NOT Patten) AND Dest) OR Src)

 

32

 

00320688

 

SDPSoox

 

 

Dest=((Patten OR Src) OR Dest) XOR Src

 

33

 

00330008

 

Sn

 

NOTSRCCOPY

 

Dest= NOT Src

 

34

 

003406C4

 

SPDSaox

 

 

Dest=((Dest AND Src) OR Patten) XOR Src

 

35

 

00351864

 

SPDSxnox

 

 

Dest=((NOT (Dest XOR Src)) OR Patten) XOR Src

 

36

 

003601A8

 

SDPox

 

 

Dest=(Dest OR Patten) XOR Src

 

37

 

00370388

 

SDPoan

 

 

Dest=NOT ((Dest OR Patten) AND Src)

 

38

 

0038078A

 

PSDPoax

 

 

Dest=((Dest OR Patten) AND Src) XOR Patten

 

39

 

00390604

 

SPDnox

 

 

Dest=((NOT Dest) OR Patten) XOR Src

 

3A

 

003A0644

 

SPDSxox

 

 

Dest=((Dest XOR Src) OR Patten) XOR Src

 

3B

 

003B0E24

 

SPDnoan

 

 

Dest=NOT (((NOT Dest) OR Patten) AND Src)

 

3C

 

003C004A

 

PSx

 

 

Dest=Patten XOR Src

 

3D

 

003D18A4

 

SPDSonox

 

 

Dest=((NOT (Dest OR Src)) OR Patten) XOR Src

 

3E

 

003E1B24

 

SPDSnaox

 

 

Dest=(((NOT Src) AND Dest) OR Patten) XOR Src

 

3F

 

003F00EA

 

PSan

 

 

Dest=NOT (Patten AND Src)

 

40

 

00400F0A

 

PSDnaa

 

 

Dest=(NOT Dest) AND Src AND Patten

 

41

 

00410249

 

DPSxon

 

 

Dest=NOT ((Patten XOR Src) OR Dest)

 

42

 

00420D5D

 

SDxPDxa

 

 

Dest=(Src XOR Dest) AND (Patten XOR Dest)

 

43

 

00431CC4

 

SPDSanaxn

 

 

Dest=NOT (((NOT (Dest AND Src)) AND Patten) XOR Src)

 

44

 

00440328

 

SDna

 

SRCERASE

 

Dest=(NOT Dest) AND Src

 

45

 

00450B29

 

DPSnaon

 

 

Dest=NOT (((NOT Src) AND Patten) OR Dest)

 

46

 

004606C6

 

DSPDaox

 

 

Dest=((Patten AND Dest) OR Src) XOR Dest

 

47

 

0047076A

 

PSDPxaxn

 

 

Dest=NOT (((Dest XOR Patten) AND Src) XOR Patten)

 

48

 

00480368

 

SDPxa

 

 

Dest=(Dest XOR Patten) AND Src

 

49

 

004916C5

 

PDSPDaoxxn

 

 

Dest=NOT (((Patten AND Dest) OR Src) XOR Dest XOR Patten)

 

4A

 

004A0789

 

DPSDoax

 

 

Dest=((Src OR Dest) AND Patten) XOR Dest

 

4B

 

004B0605

 

PDSnox

 

 

Dest=((NOT Src) OR Dest) XOR Patten

 

4C

 

004C0CC8

 

SDPana

 

 

Dest=(NOT (Dest AND Patten)) AND Src

 

4D

 

004D1954

 

SSPxDSxoxn

 

 

Dest=NOT (((Src XOR Patten) OR (Src XOR Dest)) XOR Src)

 

4E

 

004E0645

 

PDSPxox

 

 

Dest=((Src XOR Patten) OR Dest) XOR Patten

 

4F

 

004F0E25

 

PDSnoan

 

 

Dest=NOT (((NOT Src) OR Dest) AND Patten)

 

50

 

00500325

 

PDna

 

 

Dest=(NOT Dest) AND Patten

 

51

 

00510B26

 

DSPnaon

 

 

Dest=NOT (((NOT Patten) AND Src) OR Dest)

 

52

 

005206C9

 

DPSDaox

 

 

Dest=((Src AND Dest) OR Patten) XOR Dest

 

53

 

00530764

 

SPDSxaxn

 

 

Dest=NOT (((Dest XOR Src) AND Patten) XOR Src)

 

54

 

005408A9

 

DPSonon

 

 

Dest=NOT ((NOT (Patten OR Src)) OR Dest)

 

55

 

00550009

 

Dn

 

DSTINVERT

 

Dest=NOT Dest

 

56

 

005601A9

 

DPSox

 

 

Dest=(Patten OR Src) XOR Dest

 

57

 

00570389

 

DPSoan

 

 

Dest=NOT ((Patten OR Src) AND Dest)

 

58

 

00580785

 

PDSPoax

 

 

Dest=((Src OR Patten) AND Dest) XOR Patten

 

59

 

00590609

 

DPSnox

 

 

Dest=((NOT Src) OR Patten) XOR Dest

 

5A

 

005A0049

 

DPx

 

PATINVERT

 

Dest=Dest XOR Patten

 

5B

 

005B18A9

 

DPSDonox

 

 

Dest=((NOT (Src OR Dest)) OR Patten) XOR Dest

 

5C

 

005C0649

 

DPSDxox

 

 

Dest=((Src XOR Dest) OR Patten) XOR Dest

 

5D

 

005D0E29

 

DPSnoan

 

 

Dest=NOT (((NOT Src) OR Patten) AND Dest)

 

5E

 

005E1B29

 

DPSDnaox

 

 

Dest=(((NOT Dest) AND Src) OR Patten) XOR Dest

 

5F

 

005F00E9

 

DPan

 

 

Dest=NOT (Dest AND Patten)

 

60

 

00600365

 

PDSxa

 

 

Dest=(Dest XOR Src) AND Patten

 

61

 

006116C6

 

DSPDSaoxxn

 

 

Dest=NOT (((Dest AND Src) OR Patten) XOR Src XOR Dest)

 

62

 

00620786

 

DSPDoax

 

 

Dest=((Patten OR Dest) AND Src) XOR Dest

 

63

 

00630608

 

SDPnox

 

 

Dest=((NOT Patten) OR Dest) XOR Src

 

64

 

00640788

 

SDPSoax

 

 

Dest=((Patten OR Src) AND Dest) XOR Src

 

65

 

00650606

 

DSPnox

 

 

Dest=((NOT Patten) OR Src) XOR Dest

 

66

 

00660046

 

DSx

 

SRCINVERT

 

Dest=Dest XOR SRC

 

67

 

006718A8

 

SDPSonox

 

 

Dest=((NOT (Patten OR Src)) OR Dest) XOR Src

 

68

 

006858A6

 

DSPDSonoxxn

 

 

Dest=NOT (((NOT (Dest OR Src)) OR Patten) XOR Src XOR Dest)

 

69

 

00690145

 

PDSxxn

 

 

Dest=NOT (Dest XOR Src XOR Patten)

 

6A

 

006A01E9

 

DPSax

 

 

Dest=(Patten AND Src) XOR Dest

 

6B

 

006B178A

 

PSDPSoaxxn

 

 

Dest=NOT (((Patten OR Src) AND Dest) XOR Src XOR Patten)

 

6C

 

006C01E8

 

SDPax

 

 

Dest=(Dest AND Patten) XOR Src

 

6D

 

006D1785

 

PDSPDoaxxn

 

 

Dest=NOT (((Patten OR Dest) AND Src) XOR Dest XOR Patten)

 

6E

 

006E1E28

 

SDPSnoax

 

 

Dest=(((NOT Src) OR Patten) AND Dest) XOR Src

 

6F

 

006F0C65

 

PDSxnan

 

 

Dest=NOT ((NOT (Dest XOR Src)) AND Patten)

 

70

 

00700CC5

 

PDSana

 

 

Dest=(NOT (Dest AND Src)) AND Patten

 

71

 

00711D5C

 

SSDxPDxaxn

 

 

Dest=NOT (((Src XOR Dest) AND (Patten XOR Dest)) XOR Src)

 

72

 

00720648

 

SDPSxox

 

 

Dest=((Patten XOR Src) OR Dest) XOR Src

 

73

 

00730E28

 

SDPnoan

 

 

Dest=NOT (((NOT Patten) OR Dest) AND Src)

 

74

 

00740646

 

DSPDxox

 

 

Dest=((Patten XOR Dest) OR Src) XOR Dest

 

75

 

00750E26

 

DSPnoan

 

 

Dest=NOT (((NOT Patten) OR Src) AND Dest)

 

76

 

00761B28

 

SDPSnaox

 

 

Dest=(((NOT Src) AND Patten) OR Dest) XOR Src

 

77

 

007700E6

 

DSan

 

 

Dest = NOT (Src AND Dest)

 

78

 

007801E5

 

PDSax

 

 

Dest=(Dest AND Src) XOR Patten

 

79

 

00791786

 

DSPDSoaxxn

 

 

Dest=NOT (((Dest OR Src) AND Patten) XOR Src XOR Dest)

 

7A

 

007A1E29

 

DPSDnoax

 

 

Dest=(((NOT Dest) OR Src) AND Patten) XOR Dest

 

7B

 

007B0C68

 

SDPxnan

 

 

Dest=NOT ((NOT (Dest XOR Patten)) AND Src)

 

7C

 

007C1E24

 

SPDSnoax

 

 

Dest=(((NOT Src) OR Dest) AND Patten) XOR Src

 

7D

 

007D0C69

 

DPSxnan

 

 

Dest=NOT ((NOT (Patten XOR Src)) AND Dest)

 

7E

 

007E0955

 

SPxDSxo

 

 

Dest=(Src XOR Patten) OR (Src XOR Dest)

 

7F

 

007F03C9

 

DPSaan

 

 

Dest=NOT (Patten AND Src AND Dest)

 

80

 

008003E9

 

DPSaa

 

 

Dest=Patten AND Src AND Dest

 

81

 

00810975

 

SPxDSxon

 

 

Dest=NOT ((Src XOR Patten) OR (Src XOR Dest))

 

82

 

00820C49

 

DPSxna

 

 

Dest=(NOT (Patten XOR Src)) AND Dest

 

83

 

00831E04

 

SPDSnoaxn

 

 

Dest=NOT ((((NOT Src) OR Dest) AND Patten) XOR Src)

 

84

 

00840C48

 

SDPxna

 

 

Dest=(NOT (Dest XOR Patten)) AND Src

 

85

 

00851E05

 

PDSPnoaxn

 

 

Dest=NOT ((((NOT Patten) OR Src) AND Dest) XOR Patten)

 

86

 

008617A6

 

DSPDSoaxx

 

 

Dest=((Dest OR Src) AND Patten) XOR Src XOR Dest

 

87

 

008701C5

 

PDSaxn

 

 

Dest=NOT ((Dest AND Src) XOR Patten)

 

88

 

008800C6

 

DSa

 

SRCAND

 

Dest=Dest AND Src

 

89

 

00891B08

 

SDPSnaoxn

 

 

Dest=NOT ((((NOT Src) AND Patten) OR Dest) XOR Src)

 

8A

 

008A0E06

 

DSPnoa

 

 

Dest=((NOT Patten) OR Src) AND Dest

 

8B

 

008B0666

 

DSPDxoxn

 

 

Dest=NOT (((Patten XOR Dest) OR Src) XOR Dest)

 

8C

 

008C0E08

 

SDPnoa

 

 

Dest=((NOT Patten) OR Dest) AND Src

 

8D

 

008D0668

 

SDPSxoxn

 

 

Dest=NOT (((Patten XOR Src) OR Dest) XOR Src)

 

8E

 

008E1D7C

 

SSDxPDxax

 

 

Dest=((Src XOR Dest) AND (Patten XOR Dest)) XOR Src

 

8F

 

008F0CE5

 

PDSanan

 

 

Dest=NOT ((NOT (Dest AND Src)) AND Patten)

 

90

 

00900C45

 

PDSxna

 

 

Dest=(NOT (Dest XOR Src)) AND Patten

 

91

 

00911E08

 

SDPSnoaxn

 

 

Dest=NOT ((((NOT Src) OR patten) AND Dest) XOR Src)

 

92

 

009217A9

 

DPSDPoaxx

 

 

Dest=((Dest OR Patten) AND Src) XOR Patten XOR Dest

 

93

 

009301C4

 

SPDaxn

 

 

Dest=NOT ((Patten AND Dest) XOR Src)

 

94

 

009417AA

 

PSDPSoaxx

 

 

Dest=((Patten OR Src) AND Dest) XOR Src XOR Patten

 

95

 

009501C9

 

DPSaxn

 

 

Dest=NOT ((Patten AND Src) XOR Dest)

 

96

 

00960169

 

DPSxx

 

 

Dest=Patten XOR Src XOR Dest

 

97

 

0097588A

 

PSDPSonoxx

 

 

Dest=((NOT (Patten OR Src)) OR Dest) XOR Src XOR Patten

 

98

 

00981888

 

SDPSonoxn

 

 

Dest=NOT (((NOT (Patten OR Src)) OR Dest) XOR Src)

 

99

 

00990066

 

DSxn

 

 

Dest=NOT (Dest XOR Src)

 

9A

 

009A0709

 

DPSnax

 

 

Dest=((NOT Src) AND Patten) XOR Dest

 

9B

 

009B07A8

 

SDPSoaxn

 

 

Dest=NOT (((Patten OR Src) AND Dest) XOR Src)

 

9C

 

009C0704

 

SPDnax

 

 

Dest=((NOT Dest) AND Patten) XOR Src

 

9D

 

009D07A6

 

DSPDoaxn

 

 

Dest=NOT (((Patten OR Dest) AND Src) XOR Dest)

 

9E

 

009E16E6

 

DSPDSaoxx

 

 

Dest=((Dest AND Src) OR Patten) XOR Src XOR Dest

 

9F

 

009F0345

 

PDSxan

 

 

Dest=NOT ((Dest XOR Src) AND Patten)

 

A0

 

00A000C9

 

DPa

 

 

Dest=Dest AND Patten

 

A1

 

00A11B05

 

PDSPnaoxn

 

 

Dest=NOT ((((NOT Patten) AND Src) OR Dest) XOR Patten)

 

A2

 

00A20E09

 

DPSnoa

 

 

Dest=((NOT Src) OR Patten) AND Dest

 

A3

 

00A30669

 

DPSDxoxn

 

 

Dest=NOT (((Src XOR Dest) OR Patten) XOR Dest)

 

A4

 

00A41885

 

PDSPonoxn

 

 

Dest=NOT (((NOT (Src OR Patten)) OR Dest) XOR Patten)

 

A5

 

00A50065

 

PDxn

 

 

Dest=NOT (Patten XOR Dest)

 

A6

 

00A60706

 

DSPnax

 

 

Dest=((NOT Patten) AND Src) XOR Dest

 

A7

 

00A707A5

 

PDSPoaxn

 

 

Dest=NOT (((Patten OR Src) AND Dest) XOR Patten)

 

A8

 

00A803A9

 

DPSoa

 

 

Dest=(Patten OR Src) AND Dest

 

A9

 

00A90189

 

DPSoxn

 

 

Dest=NOT ((Patten OR Src) XOR Dest)

 

AA

 

00AA0029

 

D

 

 

Dest=Dest

 

AB

 

00AB0889

 

DPSono

 

 

Dest=(NOT (Patten OR Src)) OR Dest

 

AC

 

00AC0744

 

SPDSxax

 

 

Dest=((Dest XOR Src) AND Patten) XOR Src

 

AD

 

00AD06E9

 

DPSDaoxn

 

 

Dest=NOT (((Src AND Dest) OR Patten) XOR Dest)

 

AE

 

00AE0B06

 

DSPnao

 

 

Dest=((NOT patten) AND Src) OR Dest

 

AF

 

00AF0229

 

DPno

 

 

Dest=(NOT Patten) OR Dest

 

B0

 

00B00E05

 

PDSnoa

 

 

Dest=((NOT Src) OR Dest) AND Patten

 

B1

 

00B10665

 

PDSPxoxn

 

 

Dest=NOT (((Src XOR Patten) OR Dest) XOR Patten)

 

B2

 

00B21974

 

SSPxDSxox

 

 

Dest=((Src XOR Patten) OR (Src XOR Dest)) XOR Src

 

B3

 

00B30CE8

 

SDPanan

 

 

Dest=NOT ((NOT (Dest AND Patten)) AND Src)

 

B4

 

00B4070A

 

PSDnax

 

 

Dest=((NOT Dest) AND Src) XOR Patten

 

B5

 

00B507A9

 

DPSDoaxn

 

 

Dest=NOT (((Src OR Dest) AND Patten) XOR Dest)

 

B6

 

00B616E9

 

DPSDPaoxx

 

 

Dest=((Dest AND Patten) OR Src) XOR Patten XOR Dest

 

B7

 

00B70348

 

SDPxan

 

 

Dest=NOT ((Dest XOR Patten) AND Src)

 

B8

 

00B8074A

 

PSDPxax

 

 

Dest=((Dest XOR Patten) AND Src) XOR Patten

 

B9

 

00B906E6

 

DSPDaoxn

 

 

Dest=NOT (((Patten AND Dest) OR Src) XOR Dest)

 

BA

 

00BA0B09

 

DPSnao

 

 

Dest=((NOT Src) AND Patten) OR Dest

 

BB

 

00BB0226

 

DSno

 

MERGEPAINT

 

Dest=(NOT Src) OR Dest

 

BC

 

00BC1CE4

 

SPDSanax

 

 

Dest=((NOT (Dest AND Src)) AND Patten) XOR Src

 

BD

 

00BD0D7D

 

SDxPDxan

 

 

Dest=NOT ((Src XOR Dest) AND (Patten XOR Dest))

 

BE

 

00BE0269

 

DPSxo

 

 

Dest=(Patten XOR Src) OR Dest

 

BF

 

00BF08C9

 

DPSano

 

 

Dest=(NOT (Patten AND Src)) OR Dest

 

C0

 

00C000CA

 

PSa

 

MERGECOPY

 

Dest=Patten AND Src

 

C1

 

00C11B04

 

SPDSnaoxn

 

 

Dest=NOT ((((NOT Src) AND Dest) OR Patten) XOR Src)

 

C2

 

00C21884

 

SPDSonoxn

 

 

Dest=NOT (((NOT (Dest OR Src)) OR Patten) XOR Src)

 

C3

 

00C3006A

 

PSxn

 

 

Dest=NOT (Patten XOR Src)

 

C4

 

00C40E04

 

SPDnoa

 

 

Dest=((NOT Dest) OR Patten) AND Src

 

C5

 

00C50664

 

SPDSxoxn

 

 

Dest=NOT (((Dest XOR Src) OR Patten) XOR Src)

 

C6

 

00C60708

 

SDPnax

 

 

Dest=((NOT Patten) AND Dest) XOR Src

 

C7

 

00C707AA

 

PSDPoaxn

 

 

Dest=NOT (((Dest OR Patten) AND Src) XOR Patten)

 

C8

 

00C803A8

 

SDPoa

 

 

Dest=(Dest OR Patten) AND Src

 

C9

 

00C90184

 

SPDoxn

 

 

Dest=NOT ((Patten OR Dest) XOR Src)

 

CA

 

00CA0749

 

DPSDxax

 

 

Dest=((Src XOR Dest) AND Patten) XOR Dest

 

CB

 

00CB06E4

 

SPDSaoxn

 

 

Dest=NOT (((Dest AND Src) OR Patten) XOR Src)

 

CC

 

00CC0020

 

S

 

SRCCOPY

 

Dest=Src

 

CD

 

00CD0888

 

SDPono

 

 

Dest=(NOT (Dest OR Patten)) OR Src

 

CE

 

00CE0B08

 

SDPnao

 

 

Dest=((NOT Patten) AND Dest) OR Src

 

CF

 

00CF0224

 

SPno

 

 

Dest=(NOT Patten) OR Src

 

D0

 

00D00E0A

 

PSDnoa

 

 

Dest=((NOT Dest) OR Src) AND Patten

 

D1

 

00D1066A

 

PSDPxoxn

 

 

Dest=NOT (((Dest XOR Patten) OR Src) XOR Patten)

 

D2

 

00D20705

 

PDSnax

 

 

Dest=((NOT Src) AND Dest) XOR Patten

 

D3

 

00D307A4

 

SPDSoaxn

 

 

Dest=NOT (((Dest OR Src) AND Patten) XOR Src)

 

D4

 

00D41D78

 

SSPxPDxax

 

 

Dest=((Src XOR Patten) AND (Dest XOR Patten)) XOR Src

 

D5

 

00D50CE9

 

DPSanan

 

 

Dest=NOT ((NOT (Patten AND Src)) AND Dest)

 

D6

 

00D616EA

 

PSDPSaoxx

 

 

Dest=((Patten AND Src) OR Dest) XOR Src XOR Patten

 

D7

 

00D70349

 

DPSxan

 

 

Dest=NOT ((Patten XOR Src) AND Dest)

 

D8

 

00D80745

 

PDSPxax

 

 

Dest=((Src XOR Patten) AND Dest) XOR Patten

 

D9

 

00D906E8

 

SDPSaoxn

 

 

Dest=NOT (((Patten AND Src) OR Dest) XOR Src)

 

DA

 

00DA1CE9

 

DPSDanax

 

 

Dest=((NOT (Src AND Dest)) AND Patten) XOR Dest

 

DB

 

00DB0D75

 

SPxDSxan

 

 

Dest=NOT ((Src XOR Patten) AND (Src XOR Dest))

 

DC

 

00DC0B04

 

SPDnao

 

 

Dest=((NOT Dest) AND Patten) OR Src

 

DD

 

00DD0228

 

SDno

 

 

Dest=(NOT Dest) OR Src

 

DE

 

00DE0268

 

SDPxo

 

 

Dest=(Dest XOR Patten) OR Src

 

DF

 

00DF08C8

 

SDPano

 

 

Dest=(NOT (Dest AND Patten)) OR Src

 

E0

 

00E003A5

 

PDSoa

 

 

Dest=(Dest OR Src) AND Patten

 

E1

 

00E10185

 

PDSoxn

 

 

Dest=NOT ((Dest OR Src) XOR Patten)

 

E2

 

00E20746

 

DSPDxax

 

 

Dest=((Patten XOR Dest) AND Src) XOR Dest

 

E3

 

00E306EA

 

PSDPaoxn

 

 

Dest=NOT (((Dest AND Patten) OR Src) XOR Patten)

 

E4

 

00E40748

 

SDPSxax

 

 

Dest=((Patten XOR Src) AND Dest) XOR Src

 

E5

 

00E506E5

 

PDSPaoxn

 

 

Dest=NOT (((Src AND Patten) OR Dest) XOR Patten)

 

E6

 

00E61CE8

 

SDPSanax

 

 

Dest=((NOT (Patten AND Src)) AND Dest) XOR Src

 

E7

 

00E70D79

 

SPxPDxan

 

 

Dest=NOT ((Src XOR Patten) AND (Dest XOR Patten))

 

E8

 

00E81D74

 

SSPxDSxax

 

 

Dest=((Src XOR Patten) AND (Dest XOR Src)) XOR Src

 

E9

 

00E95CE6

 

DSPDSanaxxn

 

 

Dest=NOT (((NOT(Dest AND Src)) AND Patten) XOR Src XOR Dest)

 

EA

 

00EA02E9

 

DPSao

 

 

Dest=(Patten AND Src) OR Dest

 

EB

 

00EB0849

 

DPSxno

 

 

Dest=(NOT (Patten XOR Src)) OR Dest

 

EC

 

00EC02E8

 

SDPao

 

 

Dest=(Dest AND Patten) OR Src

 

ED

 

00ED0848

 

SDPxno

 

 

Dest=(NOT (Dest XOR Patten)) OR Src

 

EE

 

00EE0086

 

DSo

 

SRCPAINT

 

Dest=Dest OR Src

 

EF

 

00EF0A08

 

SDPnoo

 

 

Dest=(NOT Patten) OR Dest OR Src

 

F0

 

00F00021

 

P

 

PATCOPY

 

Dest=Patten

 

F1

 

00F10885

 

PDSono

 

 

Dest=(NOT (Dest OR Src)) OR Patten

 

F2

 

00F20B05

 

PDSnao

 

 

Dest=((NOT Src) AND Dest) OR Patten

 

F3

 

00F3022A

 

PSno

 

 

Dest=(NOT Src) OR Patten

 

F4

 

00F40B0A

 

PSDnao

 

 

Dest=((NOT Dest) AND Src) OR Patten

 

F5

 

00F50225

 

PDno

 

 

Dest=(NOT Dest) OR Patten

 

F6

 

00F60265

 

PDSxo

 

 

Dest=(Dest XOR Src) OR Patten

 

F7

 

00F708C5

 

PDSano

 

 

Dest=(NOT (Dest AND Src)) OR Patten

 

F8

 

00F802E5

 

PDSao

 

 

Dest=(Dest AND Src) OR Patten

 

F9

 

00F90845

 

PDSxno

 

 

Dest=(NOT (Dest XOR Src)) OR Patten

 

FA

 

00FA0089

 

DPo

 

 

Dest=Dest OR Patten

 

FB

 

00FB0A09

 

DPSnoo

 

PATPAINT

 

Dest=(NOT Src) OR Patten OR Dest

 

FC

 

00FC008A

 

PSo

 

 

Dest=Patten OR Src

 

FD

 

00FD0A0A

 

PSDnoo

 

 

Dest=(NOT Dest) OR Src OR Patten

 

FE

 

00FE02A9

 

DPSoo

 

 

Dest=Patten OR Src OR Dest

 

FF

 

00FF0062

 

1

 

WHITENESS

 

将目的设置成白色

 

 

转载于:https://www.cnblogs.com/shunshuiyuanxin/archive/2012/12/01/2797120.html

最后

以上就是无聊烧鹅为你收集整理的位图的光栅操作及ROP码解析(转)的全部内容,希望文章能够帮你解决位图的光栅操作及ROP码解析(转)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部