求助~怎么用GDI+和vc++实现Windows画图里的改变图像像素的功能(如图)? 5

 我来答
山水阿锐
2015-04-27 · TA获得超过34.3万个赞
知道顶级答主
回答量:23.7万
采纳率:91%
帮助的人:3.2亿
展开全部
您好,BitBlt()函数有位图异或功能
将一个位图用BitBlt的异或方式画到另一个位图上,结果就是异或的。如果两幅图像是完全一样的,异或出来则是一个空的BYTE数组,图标被使用BYTE的数组方式进行比较

C/C++ code?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

BYTE *lpDib;
BYTE *lpBase;
BITMAPINFOHEADER bi;
DWORD dwLen;
DibInfo (Orghdib, &bi);
dwLen = GlobalSize (Orghdib);
lpDib = (BYTE *)GlobalLock(Orghdib);
lpDib += (DWORD)bi.biSize + PaletteSize((LPSTR)&bi);
lpBase = (BYTE *)GlobalLock (Tarhdib);
lpBase += (DWORD)bi.biSize + PaletteSize((LPSTR)&bi);
dwLen = dwLen - bi.biSize - PaletteSize((LPSTR)&bi);
while (dwLen--)
{/*
if( *lpDib >= (int)(debasehow*(*lpBase)) )
*lpDib -= (int)(debasehow*(*lpBase));
else
*lpDib = 0; */
在本处加入异或操作: *lpDig ^= lpBase;
lpDib ++;
lpBase ++;
}
GlobalUnlock (Orghdib);
GlobalUnlock (Tarhdib);
最后看lpDig的值就行了。
追问
你好,这个代码没怎么看懂,能解释下吗?
而且这个异或操作与改变图像像素有什么联系吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式