还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

mfc从CImageList中获取CBitmap位图对象

来源:清泛原创     2016-05-24 10:33:21    人气:     我有话说( 0 人参与)

通过图像的索引号从CImageList中获取CBitmap位图对象的函数如下: CImageList中获取CBitmap位图对象void GetListImage(CImageList &Imag...

通过位图的索引号从CImageList中获取CBitmap位图对象的函数如下:

//CImageList中获取CBitmap位图对象
void GetListImage(CImageList &ImageList, CBitmap &Bitmap, int nImageIdx)
{   
	CClientDC   dcClient(NULL);

	IMAGEINFO   ImageInfo;
	ImageList.GetImageInfo(nImageIdx, &ImageInfo);
	int   nWidth  = abs(ImageInfo.rcImage.right - ImageInfo.rcImage.left);
	int   nHeight = abs(ImageInfo.rcImage.bottom - ImageInfo.rcImage.top);
	Bitmap.CreateCompatibleBitmap(&dcClient, nWidth, nHeight);
	CDC         dcMemory;
	dcMemory.CreateCompatibleDC((CDC*)NULL) ;
	CBitmap  *  pBmpOld = dcMemory.SelectObject(&Bitmap);
	dcMemory.FillSolidRect(0, 0, nWidth, nHeight, RGB(255,255,255));
	ImageList.Draw(&dcMemory, nImageIdx, CPoint(0,0), ILD_NORMAL);
	dcMemory.SelectObject(pBmpOld);
	dcMemory.DeleteDC();
	::DeleteObject( ImageInfo.hbmImage );
	::DeleteObject( ImageInfo.hbmMask );
}

调用方法:

CBitmap bitmap;

GetListImage(m_ImageList, bitmap, 0); //第一个位图

然后通过CDC的BitBlt(或者StretchBlt、TransparentBlt)绘制到界面上,效果如图:

CImageList CBitmap 位图

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)
分享到: