void CBitBltDlg::OnPaint()
{CPaintDC dc(this); // 用于绘制的设备上下文CRect rect;GetClientRect(&rect);int center_x = rect.Width() / 2;int center_y = rect.Height() / 2;//背景位图CBitmap bmpBk;bmpBk.LoadBitmap(IDB_BKG);//背景兼容dcCDC memdcBk;memdcBk.CreateCompatibleDC(&dc);CBitmap* pOldBitmapBk = memdcBk.SelectObject(&bmpBk);//获取背景位图图像尺寸BITMAP bmpinfoBk;bmpBk.GetBitmap(&bmpinfoBk);int cxBk = bmpinfoBk.bmWidth;int cyBk = bmpinfoBk.bmHeight;//源位图CBitmap bmpSrc;  bmpSrc.LoadBitmap(IDB_READY);//获取源图像尺寸BITMAP bmpinfo;bmpSrc.GetBitmap(&bmpinfo);int cx = bmpinfo.bmWidth;int cy = bmpinfo.bmHeight;//源位图的兼容dcCDC memdcSrc;memdcSrc.CreateCompatibleDC(&dc);CBitmap* pOldBitmapSrc= memdcSrc.SelectObject(&bmpSrc);//掩码位图 单值位图CBitmap bmpMonoMask;bmpMonoMask.CreateBitmap(cx, cy, 1, 1, nullptr);//掩码设备dcCDC dcMono;                       dcMono.CreateCompatibleDC(&dc);CBitmap* pOldBitmapMonoMask = dcMono.SelectObject(&bmpMonoMask);//指定源位图背景颜色COLORREF color = memdcSrc.GetPixel(2, 2);memdcSrc.SetBkColor(color);//源位图中 将刚刚设置的背景颜色转换到掩码位图  背景对应到单色位图中的1(白), 其他值变为0(黑)dcMono.BitBlt(0, 0, cx, cy, &memdcSrc, 0, 0, SRCCOPY);//输出到目标上{        dc.BitBlt(0, cy * 5, cx, cy, &memdcSrc, 0, 0, SRCCOPY);  //源图直接显示到目标  int i = 0;dc.BitBlt(cx * i, 0, cx, cy, &dcMono, 0, 0, SRCCOPY);  //演示输出掩码位图效果  ++i;//设置目标窗口dc的背景 颜色值  讲mask位图转换为目标位图 1对应目标背景 0对应前景COLORREF DlgBkColor = dc.GetPixel(center_x, center_y);dc.SetBkColor(DlgBkColor);dc.SetTextColor(RGB(140, 10, 46));//设置目标前景 颜色值  与 mask位图中的 0对应dc.BitBlt(cx * i, 0, cx, cy, &dcMono, 0, 0, SRCCOPY);++i;//显示透明效果 目标 异或 源图与掩码异或源图dc.BitBlt(cx * i, 0, cxBk, cyBk, &memdcBk, 0, 0, SRCCOPY);//目标dc.BitBlt(center_x, center_y, cx, cy, &dcMono, 0, 0, SRCAND);//生成黑色前景,原背景区域dc.BitBlt(center_x, center_y, cx, cy, &memdcSrc, 0, 0, SRCINVERT);//目标 异或 源图dc.BitBlt(center_x, center_y, cx, cy, &dcMono, 0, 0, SRCAND);//目标 异或 源图 与掩码dc.BitBlt(center_x, center_y, cx, cy, &memdcSrc, 0, 0, SRCINVERT);//目标 异或 源图 与掩码异或源图}//释放memdcBk.SelectObject(pOldBitmapBk);bmpBk.DeleteObject();memdcBk.DeleteDC();memdcSrc.SelectObject(pOldBitmapSrc);bmpSrc.DeleteObject();memdcSrc.DeleteDC();dcMono.SelectObject(pOldBitmapMonoMask);bmpMonoMask.DeleteObject();dcMono.DeleteDC();CDialogEx::OnPaint();}

BitBlt实现透明背景贴图相关推荐

  1. ps—保存透明背景的图,通过拷贝图层,拷贝,剪切,粘贴命令

    "拷贝",剪切,粘贴命令 将图像中选中的区域保存为一个图层,如下图所示,将长方形框住的内容保存为一个图层,按一下"Ctrl+c"再按一下"ctrl+v ...

  2. Sketch39 透明背景切图

    前言 最近在抽空看看设计,今天是看的第二天,因为之前设计零基础,所以遇到问题我就写下来了.方便后面学习的同学. 切图过程 1.选中想要的Group的透明背景 2.点击右下角的+号 3.点击那个刀的图标 ...

  3. python抠透明图_python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图

    因为最近在做深度学习抠图,正好要用到蒙版进行抠图,所以我将抠图代码进行了封装注释,可以直接使用.可能走了弯路,若有高见请一定提出! 主要代码 import cv2 from PIL import Im ...

  4. php缩放gif和png图透明背景变成黑色的解决方法_php技巧

    php缩放gif和png图透明背景变成黑色的解决方法_php技巧 参考文章: (1)php缩放gif和png图透明背景变成黑色的解决方法_php技巧 (2)https://www.cnblogs.co ...

  5. vue 背景透明度_Visual Studio 2017 设置透明背景图

    一.前言 给大家分享一下,如何为VS2017设置透明背景图.下面是一张设置前和设置后的图片. 设置前: 设置后: 二.设置背景图片的扩展程序 我们打开VS的扩展安装界面:[工具]->[扩展和更新 ...

  6. php gif 透明背景,php缩放gif和png图透明背景变成黑色的解决方法,缩放png_PHP教程...

    php缩放gif和png图透明背景变成黑色的解决方法,缩放png 工作中需要缩放一些gif图然后在去Imagecopymerge,可是发现使用了imagecreatetruecolor和imageco ...

  7. 【CSS】PhotoShop 切图 ② ( PhotoShop 切片选择工具 | 清除切片 | 新建基于图层的切片 | 透明背景图片切图 | 根据参考线选择切片 )

    文章目录 一. PhotoShop 切片选择工具 二.清除切片 三.新建基于图层的切片 四.透明背景图片切图 五.根据参考线选择切片 一. PhotoShop 切片选择工具 如果之前使用 切片工具 设 ...

  8. php gif透明色,php缩放gif和png图透明背景变成黑色的解决方法

    php缩放gif和png图透明背景变成黑色的解决方法 发布于 2014-10-23 14:38:23 | 355 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hy ...

  9. php gif 透明,php缩放gif和png图透明背景变成黑色的解决方法,缩放png

    php缩放gif和png图透明背景变成黑色的解决方法,缩放png 工作中需要缩放一些gif图然后在去Imagecopymerge,可是发现使用了imagecreatetruecolor和imageco ...

最新文章

  1. C语言中static详细分析
  2. CTFshow sql注入 上篇(web171-220)
  3. 【JUC并发编程04】线程间定制化通信(单标志法存在的问题)
  4. Python中由生成杨辉三角代码所思考的一些问题
  5. python安装方法3.8.2_Linux安装Python3.8.1的教程详解
  6. Android项目中最火最常用的优秀开源项目(很有用)
  7. python 笔记(一)
  8. 溢出检测单符号位法_设计经验:如何用三轴加速度传感器检测倾斜角?
  9. SSM项目连接远程Linux服务器的mysql 启动tomcat卡在了 Initializing Spring root WebApplicationContext...
  10. POJ-2762 Going from u to v or from v to u?
  11. 装CGAL与解决QWidget: Must construct a QApplication before a QPaintDevice. 问题
  12. MVC3----配置连接数据库
  13. MIPS指令集确实够精简,编译文件明显小
  14. MFQPPDCS测试理论(海盗派测试分析)
  15. android 4.4 投屏,安卓投屏助手官方
  16. 去除html中的font标签的正则表达式
  17. C语言:输入日期,计算该日期是该年的第几天。
  18. C# chart画折线
  19. 七夕恋人必备表白源码
  20. Python:peewee常用操作CRUD

热门文章

  1. matlab绘制三维图
  2. java中Statement详细用法。
  3. 伊朗2:0阿曼强势晋级 与国足争夺亚洲杯四强
  4. Java免锁数据结构
  5. HM视频编解码器安装教程
  6. transform归一化处理
  7. 点亮创意灯,用Firefly Beta绘制生动有趣的成语故事!
  8. java 集合面试题
  9. 常用的SEO工具一览
  10. c语言isnumber函数用法,isnumber函数实例应用