版权声明:本文为CSDN博主「koko.1024」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wlzyan/article/details/88019771​​​​​​​

记录下在mfc中插入png透明图片的方法
新入坑c++,使用的是vs2015,想在一个mfc项目中插入外部的png图片。发现默认的image控件只能直接拖放bmp格式图片。然后在网上学习了如何加载png图片,现在来总结一下。

新建项目
新建一个基于对话框的mfc项目 MFC_png

在对话框界面中插入两个 Picture Control
为了对比效果,我在界面中插入了两个 Picture Control,分别修改id为 IDC_STATIC1 , IDC_STATIC2
右键选择图片控件,分别添加变量 m_img1 , m_img2

在MFC_pngDlg.h中添加

CImage img;
CRect rect;

在MFC_pngDlg.cpp中添加图片透明处理函数

void TransparentPNG(CImage *png)
{for (int i = 0; i <png->GetWidth(); i++)                  //遍历像素处理{for (int j = 0; j <png->GetHeight(); j++){byte * pucColor = (byte *)(png->GetPixelAddress(i, j));pucColor[0] = pucColor[0] * pucColor[3] / 255;pucColor[1] = pucColor[1] * pucColor[3] / 255;pucColor[2] = pucColor[2] * pucColor[3] / 255;}}
}

修改确认按钮点击事件

void CMFC_pngDlg::OnBnClickedOk()
{m_img1.GetClientRect(&rect); //获得pictrue控件所在的矩形区域CDC *dc1 = m_img1.GetDC();//获得pictrue控件1的DcCDC *dc2 = m_img2.GetDC();//获得pictrue控件2的Dcint height, width;if (!img.IsNull()) img.Destroy();CString imgPath1 = _T("H:\\temp\\02.png");img.Load(imgPath1);height = img.GetHeight();width = img.GetWidth();if (!img.IsNull()) img.Draw(dc1->m_hDC, CRect(0, 0, width, height));//图片控件1展示未处理的图片TransparentPNG(&img);                    //调用透明化处理函数if (!img.IsNull()) img.Draw(dc2->m_hDC, CRect(0, 0, width, height));//图片控件2展示处理后的图片}

运行效果
为了对比效果,我将背景色改成绿色了。
点击确定后可以看出,
图片框1的图片透明部分显示为白色了
图片框2的图片透明部分正常显示。

示例图片:

————————————————

上图中 picture控件边框 可以通过设置 控件属性 Type 为  Owner Draw ,隐藏

MFC界面 插入透明图片(logo)相关推荐

  1. c语言mfc怎么插入背景图片,MFC 对话框添加背景图片详细过程(两种方法)

    给对话框添加背景图片方法很多,在此贴出两种很常见的方法.一种是通过读取位图资源显示位图(BitMap) step: 1.创建内存设备上下文: 2.选择位图,将其装入内存设备上下文: 3.使用BitBl ...

  2. 解决easyx插入透明图片的问题

    温馨提示:如果遇到这个报错是因为没有调字符集. 调一下即可,如下图所示: 现在开始说明关于插入图片的问题: 我们可以看到在easyx中插入图片是有背景的非常不好看,影响界面,那么我们在这个基础上稍加改 ...

  3. 如何在MFC中插入背景图片

    导入图片 补充 一般我们下载的图片都是JPG的或者别的格式,你可以百度一下,就能找到那种在线JPG转BMP格式的网站,在里面转一下就行 本文参考文献见后面,因为原文作者没有写怎么插入OnPaint() ...

  4. java web添加背景图片_java web项目中如何插入背景图片

    对于java可视化界面插入背景图片这个倒是轻而易举,只需要background-inage:url(图片路径就行),而对于与web项目中,我开始时也是采用这种方法,但是不尽然,代码如下: 效果如下: ...

  5. mfc中插入PNG透明图片

    mfc中插入PNG透明图片 记录下在mfc中插入png透明图片的方法 新建项目 在对话框界面中插入两个 Picture Control 在MFC_pngDlg.h中添加 在MFC_pngDlg.cpp ...

  6. Altium Designer PCB 插入图片logo的方法

    本篇博主将分享如何在Altium designer中的PCB中插入图片logo的方法. 第一步,需要准备3样东西: 第一个是Altium Designer的软件,各个版本均可. 第二个是script转 ...

  7. C语言用句柄显示bmp图片,VC编程之VC MFC界面上显示BMP图片

    本文主要向大家介绍了VC编程之VC MFC界面上显示BMP图片,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助. 1.通过点击界面浏览按钮选择BMP图像文件. 点击浏览按钮打开文件对话框选择 ...

  8. MFC界面工具BCGControlBar入门:如何使用工具栏编辑器

    BCGControlBar ("Business Components Gallery ControlBar")是MFC扩展库,使您可以创建具有完全自定义选项(功能区.可自定义工具 ...

  9. 如何录制gif动态图片并在CSDN中插入动态图片

    我们在网上浏览别人的博客时,经常可以看到以gif动态图显示的程序效果演示和代码段,那么如何录制gif动态图片并在CSDN中插入动态图片呢?        下面介绍一种简单的方法,了解之后,你也可以将其 ...

最新文章

  1. SQL执行过程中的性能负载点
  2. NeurIPS审稿引发吐槽大会,落选者把荒唐意见怼了个遍:“我谢谢你们了”
  3. 带你学python基础:列表List
  4. ie浏览器怎么打开html,Win10系统IE浏览器不能打开HTML怎么办
  5. iOS获取缓存文件的大小并清除缓存
  6. CentOS 6.4 卸载与安装桌面
  7. sqlserver数据库中清空日志文件
  8. SAP C4C Embedded Component里Lead ID和Lead TI页面的关系
  9. mysql connect返回值_mysql_connect
  10. linux 分割pdf,PDFBox分割PDF文档
  11. 成都睿铂 | 落差区域无人机倾斜摄影航线的规划要点
  12. linux之lsof使用技巧
  13. 微型计算机主机作用,微型计算机的主机包括()。
  14. 【FFmpeg】转码码率
  15. 腾讯云数据库团队:MySQL AHI 实现解析
  16. sympy 求微分方程_Sympy常用函数总结
  17. java零基础学习第七天
  18. Matlab扫雷记录01-matlab中获得向量非零元素个数
  19. oracle字符集问题
  20. 技术人员如何从外包开始自己的事业

热门文章

  1. Win10年度更新准RTM版推送 免费升级仅剩4天
  2. 联想的“智慧城市群落”
  3. 北大青鸟java初级培训_java初级编程
  4. 怀旧服服务器荣誉系统是啥,魔兽世界怀旧服:PVP荣誉系统简介,想刷大元帅这些内容必须了解...
  5. VLC for iOS
  6. libvlc media player in C# (part 2)
  7. 如何显示计算机语言栏,win10语言栏不见了,win7如何显示语言栏
  8. android 仿QQ,微信群组里的@功能,支持@多人,并能一键删除,能获取上传对应的id(修改版)
  9. 使用COM简单操作IE
  10. 2022年第十三届蓝桥杯 python B组 第B题 寻找整数