如何把CListImage中的图象一张张复制到CBitmap中?

wjxfhxy 2008-12-18 05:56:09
如何把CListImage中的图象一张张复制到CBitmap中?
...全文
93 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilovedrv 2008-12-19
  • 打赏
  • 举报
回复
调用方法


// 生成 Bitmap 资源
CBitmap bitmap1;
bitmap1.LoadBitmap (IDB_BITMAP1);


// 严重注意 Create 函数的前三个参数,宽度和高度必须是要加入图片的宽和高,否则如果加入后读取时也会有问题
CImageList ImgList ;
ImgList.Create(50, 50, ILC_COLOR32, 1, 0);


// 将图片添加到 CImageList 中
ImgList.Add(&bitmap1,RGB(0,0,0)) ;

CBitmap bitmap2;

GetListImage(ImgList, bitmap2, 0);
ilovedrv 2008-12-19
  • 打赏
  • 举报
回复
下面是一个函数,根据imagelist的个数循环调用就可以了


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 );
}
cnzdgs 2008-12-18
  • 打赏
  • 举报
回复
CListImage?是CImageList吧?用楼上提的方法。
菜牛 2008-12-18
  • 打赏
  • 举报
回复
创建内存位图,创建内存DC,将内存位图选入内存DC,然后,就可以用CImageList::DrawEx将图像绘制到内存DC,最后将内存位图从内存DC选出,就是了。

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧