本文的方法可以加载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)加载磁盘上文件