MFC位图消除底色方法的理解,加强学习

学习了一个消除位图底色的方法:可以参考下下

 CPaintDC dc(this); // 用于绘制的设备上下文

//存储目标位图
CBitmap bmp; BITMAP bm;
bmp.LoadBitmap(IDB_BITMAP4);
bmp.GetBitmap(&bm);
CDC mdcimage;
mdcimage.CreateCompatibleDC(NULL);
mdcimage.SelectObject(bmp);

//创建存储单色位图的DC
CBitmap tem;
tem.CreateBitmap(bm.bmWidth, bm.bmHeight, 1, 1, NULL);
CDC dcMack;
dcMack.CreateCompatibleDC(&dc);
dcMack.SelectObject(tem);

//工具人DC
CBitmap imabmp;
imabmp.CreateCompatibleBitmap(&dc, bm.bmWidth, bm.bmHeight);
CDC image;
image.CreateCompatibleDC(&dc);
image.SelectObject(imabmp);
image.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &mdcimage, 0, 0, SRCCOPY);
image.SetBkColor(0xff00ff);//填目标位图的底色

//底色为白色的 黑蝴蝶
dcMack.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &image, 0, 0, SRCCOPY);

//底色为黑色的 白蝴蝶
image.SetBkColor(0x0);
image.SetTextColor(0xffffff);    //设置黑底白字
image.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dcMack, 0, 0, SRCAND);//位图and

//设置白底黑字
dc.SetBkColor(0xffffff);
dc.SetTextColor(0x0);

//dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &image, 0, 0, SRCCOPY);//位图拷贝
dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dcMack, 0, 0, SRCAND);//通过and输出底色和黑蝴蝶 255 and 什么就是什么

dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &image, 0, 0, SRCPAINT);//位图OR  0 OR什么就是什么

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值