VS2010 用CxImage读入各种图片格式后在内存中转换为HBITMAP位图

最近自学游戏引擎设计,希望将各种图片格式读入内存后转为HBITMAP处理,四处搜寻无果,最终参考以下两篇博文自己搞定之

http://blog.csdn.net/wu_xiangwei/article/details/5096529

http://www.cnblogs.com/xiangism/archive/2012/10/16/2725692.html


废话不多说,先上关键代码

//将CxImage转为位图
HBITMAP Draw::ChangeCxImageToBMP(HDC hDC,CxImage* cximage)
{
	//创建HBITMAP
	HBITMAP BMP=CreateCompatibleBitmap(hDC,cximage->GetWidth(),cximage->GetHeight());
	BITMAP bm;	
	GetObject(BMP,sizeof(BITMAP),&bm);
	int pb=bm.bmBitsPixel/8;	//获取位图位数
	int BytesPerLineOut = (bm.bmWidth*pb + 3) / 4 * 4;	//计算每行像素的数据长度
	BYTE *pxd = new unsigned char[bm.bmHeight*BytesPerLineOut]; //声明暂存数组

	if(cximage->GetBpp()>=16)
	{
		//直接获取像素数据
		int pbx=cximage->GetBpp()/8;	//获取CxImage图片的位数
		int BytesPerLine = (bm.bmWidth*pbx + 3) / 4 * 4;	//计算CxImage每行像素的数据长度
		BYTE *pDib = cximage->GetBits();	//获取CxImage图片的像素数据

		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值