CImage加载png会丢失Alpha通道。

使用GDI+就可以。

#include <Windows.h>
#include <Gdiplus.h>
#pragma comment(lib, "Gdiplus.lib")
using namespace Gdiplus;
using namespace DllExport;
ULONG_PTR gdipid;
// 初始化
GdiplusStartInput gsi;
GdiplusStart(&gsi, &gdipid);
// 加载图片(常用格式均支持)
// API版
GpBitmap *bmp;
GdipCreateBitmapFormFile(L"文件名.png", &bmp);
HBITMAP hBmp;
SIZE sBmp;
GdipGetImageWidth((GpImage*)bmp, LPUINT(sBmp.cx));
GdipGetImageHeight((GpImage*)bmp, LPUINT(sBmp.cy));
GdipCreateHBITMAPFormBitmap(bmp, 0, &hBmp);
GdipDi***Image((GpImage*)bmp); // 记不到了所以打了*
// 类版
Bitmap *bmp = Bitmap::FormFile(L"文件名.png");
SIZE sBmp = {bmp->GetWidth(), bmp->GetHeight()};
HBITMAP hBmp = bmp->GetHBITMAP(0);
delete bmp;
// 这样就把png加载到了,HBITMAP里面,注意啊,画png一定要用AlphaBlend或GdiAlphaBlend函数画,才有Alpha通道。
// 卸载GDI+
GdiplusShutdown(gdipid);HBITMAP hBmp; // 加载过程已有这里省去
HDC hMemDC = CreateCompatibleDC(0);
BLENDFUNCTION bf = {0, 0, 255, AC_SRC_ALPHA};
SelectObject(hMemDC, hBmp);
AlphaBlend(目标DC, 目标x, 目标y, 目标宽度, 目标高度, hMemDC, 来源x, 来源y, 来源宽度, 来源高度, bf);
DeleteDC(hMemDC);

这样就可以快速画出带Alpha通道的png,把255改成其它数字可以调整透明度。

原文地址

C++加载PNG图片相关推荐

  1. 关于 android 加载 res 图片 out of memory 问题 解决 同样适用于 sd卡图片

    2019独角兽企业重金招聘Python工程师标准>>> 发现android 加载res图片如果过多也会崩溃 android 也是使用 Bitmap  bm = BitmapFacto ...

  2. UIWebView如何加载本地图片

    UIWebView如何加载本地图片 UIWebView加载本地图片是有实用价值的.比方说,有时候我们需要本地加载静态页来显示相关帮助信息,而这些帮助信息当中含有很多很多的富文本,用代码实现难度较大,这 ...

  3. 解决Android 加载大图片OOM

    图片在Android 占用内存计算 假如一张图的像素为100×200,那么他在内存中占用的内存为: 100×200(像素点) × 4(每个像素点占用的内存,默认为4.) public Bitmap.C ...

  4. Android加载大图片OOM异常解决

    Android加载大图片OOM异常解决 参考文章: (1)Android加载大图片OOM异常解决 (2)https://www.cnblogs.com/jevan/archive/2012/07/05 ...

  5. python怎么加载图片-怎样用python加载dicom图片

    用python加载dicom图片的方法:使用pydicom.CV2.numpy.matplotlib等库即可.pydicom库是专门用来处理dicom图像的python专用库. python读取DIC ...

  6. 【Flutter】Image 组件 ( 加载网络图片 | 加载静态图片 | 加载本地图片 | path_provider 插件 )

    文章目录 一.加载网络图片 二.加载静态图片 三.加载本地图片 四.完整代码示例 五.相关资源 一.加载网络图片 参考 [Flutter]Image 组件 ( Image 组件简介 | Image 构 ...

  7. thinkphp+ajax无刷新分页并加载显示图片

    2019独角兽企业重金招聘Python工程师标准>>> 最近自己用thinkphp和bootstrap做一个小站点,在用到ajax与后台数据库交互实现无刷新分页时,因为我需要返回的数 ...

  8. Android手机内存图片读取,有效解决Android加载大图片内存溢出的问题

    今天在交流群里,有人问我他经常遇到加载图片时内存溢出的问题,遇到的情况还是在自己的测试机或者手机里没有问题,做好了, 到了客户手机里就内存溢出了.其实有时候不同的手机和不同的系统对内存的要求不一样,尤 ...

  9. 剖析Picasso加载压缩本地图片流程(解决Android 5.0部分机型无法加载本地图片的问题)

    之前项目中使用Picasso遇到了一个问题:在Android 5.0以上版本的部分手机上使用Picasso加载本地图片会失败.为了解决这个问题,研究了一下Picasso加载和压缩本地图片的流程,才有了 ...

  10. MFC——在视图窗口加载背景图片

    1.若是文档视图程序的话,在视图类的OnDraw(CDC* pDC)函数中调用pDC->TextOut()函数,就像平常输出文字一样.若是嫌文字的背景颜色破坏了图像,可以在输出文字之前调用pDC ...

最新文章

  1. 一、 函数调用栈,执行上下文及变量对象
  2. java什么是静态_什么是java静态
  3. 狼道:强者的成人礼(第2版)
  4. yeoman+grunt/gulp+bower构建angular项目
  5. java的properties文件中的换行书写
  6. iOS笔记(一)GCD多线程:信号量和条件锁
  7. H5中 video 使用border-radius失效解决方法
  8. 人件第二版(中文版)pdf
  9. 《信号与线性系统分析》学习心得
  10. python通过ip池爬_如何自建PYTHON爬虫代理IP池
  11. bootcamp空间不足_Bootcamp安装WindowsXP补丁时C盘空间不足的解决措施
  12. aforge java_java(一些java API)或C#(emgucv,dshownet,Aforge.NET)中的实时对象跟踪
  13. VS Code下载安装教程
  14. HTML的路径和链接、注释、特殊字符
  15. 计算机视觉知识表征,计算机视觉基础 - 边缘和轮廓检测
  16. 认识计算机教案模板表格,word表格制作教学设计范文
  17. php推送消息到邮箱,thinkphp3.2通过PHPMailer发送邮件推送消息
  18. 异常-Exception
  19. Jetbrains系列产品
  20. 解读测试能力素质模型

热门文章

  1. 海银财富领军人物:韩宏伟(军人企业家)
  2. 【Javascript 基础】课堂笔记1
  3. python怎么算二元一次方程_用python解决高数所有计算题--sympy求解极限、积分、微分、二元一次方程等...
  4. 辛普森悖论如何影响AB测试
  5. linux学习笔记-第三课-ls,cd,alias,PASH,目录结构,快捷键
  6. HDU - 4747 Mex(线段树)
  7. pinbox: 我用过最好的收藏工具
  8. Python爬取数据存储到本地文本文件
  9. 合影效果java_【蚂蚁课堂】四十三:如何拍酷炫集体照?
  10. 流量/访客数/曝光量/浏览量/pv/uv