19,464
社区成员
发帖
与我相关
我的任务
分享
// 生成 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);
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 );
}