在mfc中,我们经常碰到的一个情况是,想在界面上添加一个图片,比方说一个小人,但是我们不想要除了图片中小人外的其它图片,怎么办?
我们需要准备三个素材,第一个背景图片,第二个你想要添加的原始小人图片(除小人外其余地方为黑色),第三个屏蔽图片,该图片将你想要扣出来的图片的区域全部涂成黑色,其余部位为白色。
原始要加载的图片 屏蔽图,需要的为黑,不需要的为白
背景图
那么只要下面两个步骤就可以了:
步骤一: 使用bitblt函数将屏蔽图与背景图做AND运算,贴到目的地DC中
步骤二: 再以要透空的图与背景图做OR运算,贴到目的地DC中
void CMyDlg::OnPaint() { CPaintDC dc(this); CDC *mdc = new CDC; //建立一个暂存DC CBitmap *bitmap1 = new CBitmap; //建立源位图 CBitmap *bitmap2 = new CBitmap; //用于反色的源图 CBitmap *bgbmp = new CBitmap;//背景图片 CRect rect; GetClientRect(&rect); mdc->CreateCompatibleDC(&dc); if(NULL == (bgbmp->m_hObject = (HBITMAP)::LoadImage(NULL,"bg.bmp",IMAGE_BITMAP,rect.right,rect.bottom,LR_LOADFROMFILE))) AfxMessageBox("加载背景图片出错"); if(NULL == (bitmap1->m_hObject = (HBITMAP)::LoadImage(NULL,"2.bmp",IMAGE_BITMAP,rect.right,rect.bottom,LR_LOADFROMFILE))) AfxMessageBox("加载源图图片出错"); if(NULL == (bitmap2->m_hObject = (HBITMAP)::LoadImage(NULL,"3.bmp",IMAGE_BITMAP,rect.right,rect.bottom,LR_LOADFROMFILE))) AfxMessageBox("加载源图反色图片出错"); mdc->SelectObject(bgbmp);//取得背景图 dc.BitBlt(0,0,rect.right,rect.bottom,mdc,0,0,SRCCOPY); mdc->SelectObject(bitmap2); dc.BitBlt(0,0,rect.right/2+70,rect.bottom/2+30,mdc,40,40,SRCAND); mdc->SelectObject(bitmap1); dc.BitBlt(0,0,rect.right/2+70,rect.bottom/2+30,mdc,40,40,SRCPAINT); }
效果图如下:
发表评论
-
截图代码
2015-02-11 19:47 0#include "utility.h" ... -
vc---工程打不开问题解决(转载)
2012-07-07 15:03 2170在vc编程中,经常遇到dsw工程文件无法打开,或者打 ... -
图像编程----如何编写SetTimer的回调函数实现动画效果
2011-09-23 12:53 1363我们一般用到settimer函数的时候,第三个参数一般 ... -
MFC类中常用到的一些动态数组
2011-08-12 22:29 0在MFC中,我们经常会碰到保存元素之类的问题,一般用固定的 ... -
堆排序算法实现
2011-08-11 16:57 9241.堆排序. 平均复杂度,最坏复杂度都是nlogn #inc ... -
网络基础
2011-08-11 16:57 0本帖子将介绍如何使用vc6.0进行网络套接字的编程,包括 ... -
句柄,指针,窗口ID之间的互相转换
2011-08-09 10:54 0VC中窗口ID,句柄,指针三者相互转换函数 ID--H ... -
动态链接库
2011-08-08 22:32 0动态链接库,简称DLL,它不是独立运行的程序,只能由其他程 ... -
多线程编程
2011-08-08 19:59 0多线程相关的编程,有很多说法,有人说应该去除,因为他带了 ... -
在用VC6.0写程序调试时,初学者总是会遇到一些错误,针对如下错误主要是因为MFC类库没有引用所出现的问题。
2011-08-08 16:42 1647在用VC6.0写程序调试时,初学者总是会遇到一些错误,针对如下 ... -
多线程编程
2011-08-08 19:59 826多线程相关的编程,有很多说法,有人说应该去除,因为他带 ... -
图标编程(待续)
2011-08-08 15:00 01.动态更改图标ICON 其实很简单 (1)首先我们加载一 ... -
光标编程
2011-08-08 14:47 01.设置光标 我们一般 ... -
键盘实例
2011-08-08 11:03 01.如何防止对话框按下Enter键自动退出 (1)截取消息B ... -
图像编程
2011-08-06 12:20 0涉及图像编程其实很简单,就是要注意双缓冲问题,双缓冲的问题 ... -
图像编程
2011-08-06 12:09 0涉及图像编程其实很简单,就是要注意双缓冲问题,双缓冲的问题 ... -
图形编程
2011-08-06 10:20 0以前一直有个误会,觉得画图形和画图像是一样的,需要双缓冲, ... -
文件相关的编程
2011-08-04 17:04 0从今天开始,我们来开始涉及一些文件方面的编程,也是对它做一个 ... -
控件的扩展使用方法
2011-08-04 13:28 01.动态创建控件 (1) ... -
控件编程
2011-08-04 10:46 01.具有随机图片背景的Ed ...
相关推荐
静态编译后的易语言EXE/DLL之间不能再共享譬如窗口、窗口组件等类似资源,对于已经静态连接到一个EXE/DLL中的支持库,该支持库中的数据或资源将不能再被其它EXE/DLL中所使用的同名支持库访问。这是因为代码被分别...
实例150 打印一个空学生证 264 实例151 自定义横向或纵向打印 266 实例152 自定义打印页码范围 268 第14章 文件及数据流技术 271 实例153 根据日期动态建立文件 272 实例154 将长文件名转换成短文件名 273 实例155 ...
使用键盘加速键函数可以拷贝、创建、加载或删除加速键表,* 图标是一个图片,由一个位图图像组成,并和一个掩码组合构成该图片的透明区域。当提到图标时,可以是下列两种情况: 1)单个图标图像。资源类型为RT_ICON...
电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...
173 4.3 图像预览 175 实例119 局部图像放大 175 实例120 浏览大图片 177 实例121 剪切图片 178 实例122 图像旋转 181 实例123 鼠标拖拽图像 182 4.4 图形缩放与变换 183 ...
第1章 界面外观 实例1 带图标的菜单 ... 实例106 建立一个快捷方式 实例107 设置程序为自动被执行 实例108 注册与卸载OCX 实例109 限定程序的使用时限 实例110 在IE工具栏中加入快捷图标
72 <br>0102 将字符串首字母转换大写 72 <br>0103 如何进行字节数组和字符串的相互转换 72 <br>0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73 <br>4.2 获取字符串信息 73 ...
绘制透明位图的关键就是创建一个“掩码”位图(mask bitmap),这个“掩码”位图是一个单色位图,它是位图中图像的一个单色剪影。 在详细介绍实现过程之前先介绍下所使用的画图函数以及函数参数所代表的功能;整个...
电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...
电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...
电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...
电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...
电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...
精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...
实例273 使用内连接选择一个表与另一个表中行相关的所有行 9.14 外连接查询 实例274 LEFT OUTER JOIN查询 实例275 RIGHT OUTER JOIN查询 实例276 使用外连接进行多表联合查询 9.15 利用IN进行查询 实例277 ...
参数 图标文件, 文本型, 可空, 图标文件的路径 可空:为空时用目标的第一个图标 .参数 运行方式, 整数型, 可空, 1,常规方式,3,最大化,7,最小化 .参数 备注, 文本型, 可空, 快方式的备注信息 .参数 快捷键, 文本型, ...
精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...
精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...
精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...