透明贴图实现

透明贴图实现

ID:37537806

大小:181.50 KB

页数:8页

时间:2019-05-25

透明贴图实现_第1页
透明贴图实现_第2页
透明贴图实现_第3页
透明贴图实现_第4页
透明贴图实现_第5页
资源描述:

《透明贴图实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、透明贴图绘制透明位图是指在绘制位图时只绘制除了指定颜色外的其余部分,而指定的颜色就被称为“透明色”。通过将位图的背景色指定成“透明色”,在绘制时不绘制带“透明色”的这部分背景,仅绘制图像,这样就可以将图像透明地绘制到窗口上。绘制包含透明色的位图的方法有许多种,比较常用的是屏蔽绘制和非屏蔽绘制,屏蔽绘制指的是事先做一张掩码位图,非屏蔽绘制是动态生成掩码位图。下面将分别详细介绍这两种绘制方法。在写透明贴图的方法前先来说说透明贴图,所谓的透明贴图并不是真正意义上的透明,而是图像不需要显示的部分显示出的颜色是当前对话框的背景色,也就是说把图像不需要显示的颜色当成背景色,显示的部分

2、作为前景色,透明就是把背景换成对话框背景。要实现这种透明有两种方法,一种是让背景色成为白色,然后与对话框背景色进行与运算;还有一种是让背景色成为黑色,然后与对话框背景色进行或运算。这样位图的背景色就消失了。了解了透明的概念,就可以避免透明贴图的一些缺点,如果位图的前景色也存在许多白色,则采用将背景色变成黑色,与对话框背景色进行或运算的方法,这样前景色的白色部分才不会被误当成背景色透明显示;反过来,如果位图前景色存在大量黑色部分是,则采用将背景色变成白色,与对话框背景色进行与运算的方法。当然,如果前景色同时存在大量白色和黑色时,则透明贴图会遇到大麻烦,需要想办法将位图的白色

3、或黑色部分做一些修改后再进行透明贴图。屏蔽绘制绘制透明位图的关键就是创建一个“掩码”位图(maskbitmap),这个“掩码”位图是一个单色位图,它是位图中图像的一个单色剪影。在MFC中,绘图需要使用设备描述表,透明贴图时需要创建两个内存设备描述表,一个是用于存放位图的设备描述表(imgDC),一个是用于存放“掩码”位图的设备描述表(maskDC)。在“掩码”位图设备描述表中制作“掩码”位图的方法是先创建一个单色的bitmap,放入掩码设备描述表(maskDC)中,然后使用拷贝粘贴的方式将存放有位图的设备描述表(imgDC)绘制到掩码设备描述表上,这样,掩码设备描述表显示

4、的位图即是“掩码”位图。在详细介绍实现过程之前先介绍下所使用的画图函数以及函数参数所代表的功能;整个绘制过程需要使用到BitBlt()函数,关于这个函数,MSDN上的说明是这样的:这个函数的功能是把源设备上下文中的一个矩形区域中所有像素的颜色比特信息传输给目标设备上下文。BOOLBitBlt(intx,inty,intnWidth,intnHeight,CDC*pSrcDC,intxSrc,intySrc,DWORDdwRop);函数参数如下:Intx表示绘制位图目标左上角x坐标;-8-Inty表示绘制位图目标左上角y坐标;IntnWidth表示绘制位图目标的区域宽度;I

5、ntnHeight表示绘制位图目标的区域高度;CDC*pSrcDC表示存储源位图的设备描述表;IntxSrc表示源位图的左上角x坐标;IntySrc表示源位图的左上角y坐标;DWORDdwRop表示栅格运算标志;dwRop的取值与值的描述如下表所示:值描述BLACKNESS用调色板中索引为0的颜色(默认是黑色)填充目标矩形。CAPTUREBLT用调色板中索引为0的颜色(默认是黑色)填充目标矩形。DSTINVERT将目标矩形反色。MERGECOPY将源矩形中的颜色与当前目标设备环境选中的画刷通过逻辑与操作进行混合。MERGEPAINT将源矩形的颜色反色后与目标矩形的颜色通过

6、逻辑或操作进行混合。NOMIRRORBITMAP防止位图镜像翻转。NOTSRCCOPY源矩形反色复制到目标矩形。NOTSRCERASE将源矩形与目标矩形的颜色通过逻辑或操作混合后,再反色。PATCOPY将目标设备环境选中的画刷复制到目标位图。PATINVERT将目标设备环境选中的画刷与目标矩形中的颜色进行逻辑异或操作,复制到目标位图。PATPAINT将目标设备环境选中的画刷与源矩形中的颜色的反色进行逻辑或操作,其结果再与目标矩形的颜色进行逻辑或操作。SRCAND将源矩形与目标矩形的颜色进行逻辑与操作。SRCCOPY直接将源矩形拷贝到目标矩形,最常用的绘制位图属性。SRCE

7、RASE将目标矩形的反色与源矩形的颜色进行逻辑与操作。SRCINVERT将源矩形的颜色与目标矩形进行逻辑异或操作。SRCPAINT将源矩形的颜色与目标矩形进行逻辑或操作。WHITENESS用调色板中索引为1的颜色(默认是白色)填充目标矩形。原图如下所示,-8-下面是整个实现过程:1)创建一张大小与需要绘制图像相同的位图作为“掩码”位图;2)将新创建的“掩码”位图存储至掩码位图的设备描述表中;3)把位图设备描述表的背景设置成“透明色”,即不需要显示的颜色;4)复制粘贴位图到“掩码”位图的设备描述表中,这个时候“掩码”位图设备描述

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

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

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