本文的方法可以加载bmp、jpg、png等多种格式的图片,只是在当前实际使用过程中,由于大多软件都使用带透明色的png图片,所以以加载png图片为研究切入点,找到对应的加载办法。主要使用两种方法:分别使用GDI+和CImage来加载。GDI+主要使用Image类;CImage则是微软在新版的VS中新增的MFC类,内部主要也是用GDI+来实现的。
1、Image加载图片
一般主要有两种情况:一是加载磁盘上的图片文件;另一个则是通过资源id加载资源中图片。对于磁盘上的图片文件,似乎Image的有两个方法可以现,Image::FromFile和Image::FromStream,后者流程比较复杂,前者则比较简单,直接通过图片文件的绝对路径去加载即可,非常方便。但是使用Image::FromFile则有个问题,会将磁盘上的文件“锁住”,其他地方如果要同时加载该文件则可能会出问题。所以无论是磁盘上图片文件,还是资源中的图片,都调用Image::FromStream,以流的方式去加载。两种情况,在加载到流中的代码有所不同。
(1)加载磁盘上文件
<span style="font-family:SimSun;"> TCHAR achErrInfo[512] = { 0 };
// 将文件读到流内存中
HANDLE hFile = ::CreateFile( szFileNa

本文介绍了使用C++加载png图片的两种方法:GDI+的Image类和CImage类。GDI+的Image::FromFile会锁定文件,建议使用Image::FromStream。CImage::LoadFromResource不能加载png,而CImage::Load虽然支持文件路径加载,但同样存在锁定问题,最佳实践是使用CImage::Load进行流加载。
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



