VC图片加载

   图片加载

    VC MFC 提供的 API LoadBitmap / LoadImage 类 CBitmap 等都只能操作 BMP 位图,图标。对于其他常用的 JPG / JPEG / GIF / PNG 格式,它无能为力。VC 下怎样才能加载各种非 BMP 格式的图片呢? 下面介绍一种最简单的办法。

    用 CImage 类的 Load 函数加载图片,之后用 Detach 取得 HBITMAP 句柄。取得图片的HBITMAP 句柄后就可以像操作 BMP 图片一样处理 JPG / JPEG / GIF / PNG 格式的图片了。具体代码如下:  

#include “atlimage.h”  
CImage img;  
HRESULT ret = img.Load(filename ); // filename 是要加载的文件名(包含路径)  
HBITMAP bitmap = img.Detach();  //像操作 BMP 图片一样处理图片。

在HBITMAP与 CBitmap 间相互转换

1.

HBITMAP转成CBitmap: 
HBITMAP   hBmp; 
//hBmp的初始化代码 
CBitmap*   pBmp   =   CBitmap::FromHandle(hBmp); 
CBitmap转成HBITMAP: 
CBitmap*   pBmp; 
HBITMAP   hBmp   =   (HBITMAP)(*pBmp);//(HBITMAP)是CBitmap类重载了的操作符. 

2.

HBITMAP   ->   CBitmap: 
CBitmap*   pcBmp   =   CBitmap::FromHandle(hBmp); 
CBitmpa   ->   HBITMAP: 
HBITMAP   hBmp   =   (HBITMAP)cBmp;

3.

HBITMAP   hbmp; 
CBitmap   bmp; 
bmp.Attach(hbmp); 
4.

CBitmap::FromHandle()   转换出来的临时   CBitmap   对象似乎并不是可靠的!MSDN   上说这个临时只在某一时间段内有效。等到某个空闲的时候,这个临时   CBitmap   对象会被清除掉。 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值