为vc应用程序对话框添加透明位图

为vc应用程序对话框添加透明位图

ID:27803370

大小:102.50 KB

页数:5页

时间:2018-12-06

为vc应用程序对话框添加透明位图_第1页
为vc应用程序对话框添加透明位图_第2页
为vc应用程序对话框添加透明位图_第3页
为vc应用程序对话框添加透明位图_第4页
为vc应用程序对话框添加透明位图_第5页
资源描述:

《为vc应用程序对话框添加透明位图》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、为VC++应用程序对话框添加透明位图http://www.sina.com.cn2005年08月09H08:49天极yesky文/刘涛我们在进行程序的界面设计时,常常希望将位图的关键部分,也既是图像的前景显示在界面上,而将位图的背景隐藏起来,将位图与界面很自然的融合在一起,本实例介绍了透明位图的制作知识,并将透明位图在一个对话框中显示了出來,界面效果如图一所示:图一、对话框界面上透明显示位图-、实现方法绘制〃透明〃位图是指绘制某一位图中除指定颜色外的其余部分,我们称这种颜色为〃透明色〃。通过将位图的

2、背景色指定为〃透明色〃,在绘制时,不绘制这部分背景,而仅绘制图像,这样就可以将位图中图像透明地绘制到窗口上。绘制〃透明〃位图的关键是创建一个〃掩码〃位图(maskbitmap),〃掩码〃位图是一个单色位图,它是位图屮图像的一个单色剪影。在Windows编程中,绘图都要用到设备描述表,我们需创建两个内存设备描述表:位图设备描述表(imagoDC)和〃掩码〃位图设备描述表(maskDC)o位图设备描述表用來装入位图,而〃掩码〃位图设备描述表用來装入〃掩码〃位图。在〃掩码〃位图设备描述表中制作〃掩码〃位图

3、的方式是:先创建一个单色的Bitmap,装入maskDC,然后,以〃SRCCOPY〃的方式将装有位图的位图设备描述表绘制(BitBlt)到maskDC上。这样,maskDC的显示平面中的位图即是〃掩码〃位图。-般情况下,绘制〃透明〃位图的实际操作步骤如下:1、位图设备描述表以〃SRCIWERT〃的方式绘制(BitBlt)到显示设备描述表上;2、〃掩码〃位图设备描述表以〃SRCAND〃的方式绘制(BitBlt)到显示设备描述表上;3、再将位图设备描述表以〃SRCTNVERT〃的方式绘制(BitBlt)

4、到显示设备描述表上。这样除〃透明色〃外的其余位图部分(图像部分)就被绘制到窗口上了。上述操作中需要用到的显示函数BitBlt的原型和说明如下:BOOLBitBlt(intx,inty,intnWidth,intnlleight,CDC*pSrcDC,intxSrc,intySrc,DWORDdwRop);函数的参数说明如下:intx表示贴到目的地的左上角X坐标;inty表示/贴到目的地的左上角Y坐标;intnWidth表示贴到目的地的区域宽度;intnHeight表示贴到目的地的区域髙度;CDC*p

5、SrcDC表示存储源位图的设备描述表;intxStc表示源位图的左上角X坐标;intySrc表示源位图的左上角Y坐标;DWORDdwRop为柵格运算标志,一般我们选择SRCCOPY,直接拷贝源位图到目标。还可以让源位图和目标位图进行XOR,AND,OR等等的操作。大家可以查看MSDNo二、编程步骤1、启动VisualC++6.0,生成一个基于对话框架的应用程序,讲程序命名为,zTransPrarentTmageTest,z;2、添加位图资源,其ID为TDB_DRAGON,然后在对话框上添加一个IDC

6、_STATTC控件,在其属性设置里选择显示该资源图像;3、使用ClassWizard自定义类CtransparentImage,其基类选择Cstatic;4、添加代码,编译运行程序。三、程序代码//////////////////////////////////////////////////////////#ifndefTRANSPARENTIV1AGEHTRANSPARENTIN1AGE42A6E39597E411D3B6F0005004024A9EMMMM^defineTRANSPARENT1

7、WEJI_TRANSPARENTlWE_42A6E395_97E4_llD3_B6F0_005004024A9E#if_MSC_VER>=1000#pragmaoncettendifclassCTransparentImage:publicCStatic{public:CTransparentTmage();virtual^CTransparentTmage();protected://{{AFX_MSG(CTransparentImage)afxmsgvoidOnPaint();//}}AFXMS

8、GDECLAREMESSAGE.MAP()};//{{AFX_INSERT_LOCATION}}ftendif//////////////////////////////////////////////////////////////^include"SldAFx.h"#include^TransparentImage,h"#ifdef_DEBUG★definenewDEBUGNEWitundefTHISFILEstaticcharTHIS_FILE[]=_FILE_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。