MFC透明位图显示函数
研究好久才弄好,注释的比较详细,不明白的函数可以参考MSDN
bool TransparentDIB(CBitmap * dib, /*要绘制的位图*/ CDC * pDC, /*目标DC*/ CRect * rct, /*目标矩形*/ COLORREF transColor, /*透明色*/ bool bStretch /*是否拉伸位图以适应目标矩形*/) { //验证参数 if(dib == NULL || pDC == NULL || rct == NULL) return false; int nWidth; int nHeight; //位图信息对象 BITMAP w_bitmap_info; //获取位图信息 dib->GetBitmap(&w_bitmap_info); //新建设备上下文 CDC w_memoryDC; //创建兼容内存DC w_memoryDC.CreateCompatibleDC(pDC); //根据拉伸状态获得图像实际绘制尺寸 if(bStretch) { nWidth = rct->Width(); nHeight = rct->Height(); } else { nWidth = w_bitmap_info.bmWidth; nHeight = w_bitmap_info.bmHeight; } w_memoryDC.SelectObject(dib);//选入位图对象 w_memoryDC.SetBkColor(transColor);//设置透明色 CDC w_maskDC;//创建兼容内存DC作为掩码DC w_maskDC.CreateCompatibleDC(pDC);//创建兼容内存DC作为掩码DC CBitmap w_maskBitmap;//创建新位图作为掩码位图 w_maskBitmap.CreateBitmap(w_bitmap_info.bmWidth,w_bitmap_info.bmHeight,1,1,NULL); //创建新位图作为掩码位图 w_maskDC.SelectObject(&w_maskBitmap);//选入掩码位图 w_maskDC.BitBlt(0,0,w_bitmap_info.bmWidth,w_bitmap_info.bmHeight,&w_memoryDC,0,0,SRCCOPY); //SRCCOPY方式将源位图以原始大小绘制到掩码DC pDC->StretchBlt(0,0,nWidth,nHeight,&w_memoryDC,0,0,w_bitmap_info.bmWidth,w_bitmap_info.bmHeight,SRCINVERT); //SRCINVERT方式将源位图拉伸绘制到窗口DC pDC->StretchBlt(0,0,nWidth,nHeight,&w_maskDC,0,0,w_bitmap_info.bmWidth,w_bitmap_info.bmHeight,SRCAND); //SRCAND方式将掩码位图拉伸绘制到窗口DC pDC->StretchBlt(0,0,nWidth,nHeight,&w_memoryDC,0,0,w_bitmap_info.bmWidth,w_bitmap_info.bmHeight,SRCINVERT); //SRCINVERT方式将源位图拉伸绘制到窗口DC //完成绘制 w_memoryDC.DeleteDC();//删除内存DC w_maskDC.DeleteDC();//删除掩码DC return true; }
MFC透明位图显示函数相关推荐
- 如何画透明位图(转)
画透明位图通常的方法是使用遮罩.所谓遮罩就是一张黑白双色的位图,他和要透明的位图是对应的,遮罩描述了位图中需要透明的部分,透明的部分是黑色的,而不透明的是白色的,白色的部分就是透明的部分. 假设图A是 ...
- vc实现透明位图,透明背景
vc实现透明位图,透明背景 我们在进行程序的界面设计时,常常希望将位图的关键部分,也既是图像的前景显示在界面上,而将位图的背景隐藏起来,将位图与界面很自然的融合在一起,本文介绍了透明位图的制作知识,并 ...
- MFC基于对话框如何添加位图并使位图背景透明(TransparentBlt函数)
MFC中比较重要的一部分学习内容即是绘图,而绘图时我们会发现如果想插入一张图片而又不想要图片的背景,或者已经把图片的背景用Ps去掉了,但是在MFC窗口中显示图片的时候又有了白色的背景,这个时候就可以使 ...
- 透明位图的显示(TransparentBlt函数)
包含透明色的位图的绘制方法有多种,最简单的方法是调用现成的函数:TransparentBlt,也可以通过自己的代码实现类似TransparentBlt的功能,实现过程也有两种形式,一种是事先做一张掩码 ...
- C语言TransparentBlt函数,技术分享 - 使用TransparentBlt函数实现绘制透明位图
背景 在自己本科的时候,喜欢用 VC6.0 写一些小游戏来锻炼自己的编程水平.那些小游戏的游戏画面绘制都是使用Windows提供的GDI(图形设备接口)函数实现的,并没有调用现成的游戏引擎.所以,使得 ...
- TransparentBlt 透明位图的显示
from : http://www.cnblogs.com/syxchina/archive/2010/06/01/2197688.html 包含透明色的位图的绘制方法有多种,最简单的方法是调用现成 ...
- 使用StretchBlt函数实现绘制透明位图
背景 在自己本科的时候,喜欢用 VC6.0 写一些小游戏来锻炼自己的编程水平.那些小游戏的游戏画面绘制都是使用Windows提供的GDI(图形设备接口)函数实现的,并没有调用现成的游戏引擎.所以,使得 ...
- 使用TransparentBlt函数实现绘制透明位图
背景 在自己本科的时候,喜欢用 VC6.0 写一些小游戏来锻炼自己的编程水平.那些小游戏的游戏画面绘制都是使用Windows提供的GDI(图形设备接口)函数实现的,并没有调用现成的游戏引擎.所以,使得 ...
- [源码和文档分享]使用TransparentBlt函数实现绘制透明位图
背景 在自己本科的时候,喜欢用 VC6.0 写一些小游戏来锻炼自己的编程水平.那些小游戏的游戏画面绘制都是使用Windows提供的GDI(图形设备接口)函数实现的,并没有调用现成的游戏引擎.所以,使得 ...
最新文章
- java正则表达式 1,Java正则表达式学习(1)
- ai钢笔工具怎么描线_AI钢笔工具技巧,怎么画出完美的贝塞尔曲线
- Golang的基本类型、引用类型、复合类型
- 无法加载主类的10中方法
- jcmd 命令_jcmd:一个可以全部统治的JDK命令行工具
- 小哥哥你有98K吗?利用Python制作一款多功能变声器!
- k8s mysql pv_k8s+mysql+pv+pvc+NFS实现mysql容器编排
- Python面向对象的三大特征(封装、继承、多态)
- 用计算机算非,在线计算器上的与、或、非、异或等逻辑运算键如何使用?
- Docker Desktop 安装使用教程
- 限流算法:滑动时间窗口算法。
- 百度、谷歌、亚马逊、微软神同步:被盯上的智能语音排位赛
- 云班课使用浏览器倍速播放插件
- 数据库中的E—R图画法
- 词根词缀spers/spher/spir/spond等词根衍生的单词
- Excel为图表指定横向坐标数据
- mac居家办公怎么连接公司内网,用tunnelblick
- ArcGIS基础:面数据空洞填充的方法
- word 编号圆圈里面带个数字的输入
- 程序员外包到底怎么了?
热门文章
- 做shopify收款方式有哪些
- 【DeprecationWarning: BICUBIC is deprecated and will be removed in Pillow 10 (2023-07-01).的解决方案】
- IDM下载器使用方法详解:百度网盘下载,视频会员一网打尽!
- 数学符号:等号上面加一个点≐
- python字符串修改
- Go语言学习 二十三 错误处理和运行时恐慌(Panic)
- php图片点击查看大图,jQuery点击小图看大图,大图查看内容详情所有图片
- 面包板入门电子制作 学习笔记6
- VB问题——ByRef参数类型不符
- statis关键字的使用