此方法经测试是可以加载jpg,gif,bmp等常见格式图片的。
// 创建一个imagelist
CImageList imgList;
imgList.Create(16, 16, ILC_COLORDDB|ILC_MASK, 0, 1);
// 创建一个bitmap对象指针
Bitmap *pBmp = new Bitmap(16, 16, PixelFormat32bppRGB);
CString strImageFile = _T("C:\\test.gif");
if(_access(strImageFile, 0) != 0) // not exist
{
return;
}
// 将 strImageFile 绘制到pBmp中的对应位置上
Graphics gc(pBmp);
gc.SetInterpolationMode(InterpolationModeHighQualityBilinear);
// 从strImageFile生成一个Bitmap
Gdiplus::Bitmap *pImage = Bitmap::FromFile((const wchar_t *)_bstr_t(strImageFile));
// 将该Bitmap绘制到pBmp中的正确位置上
Rect rcTar(16, 0, 16,16);
//先将区域内填充为白色
Color col(255,255,255);
SolidBrush sb(col);
gc.FillRectangle(&sb, rcTar);
// 将图像填充到指定区域
gc.DrawImage(pImage, rcTar,
0, 0, pImage->GetWidth(), pImage->GetHeight(),
UnitPixel, 0, 0, 0);
delete pImage;
}
// 从pBmp获得一个HBITMAP, 然后得到CBitmap对象
HBITMAP hBitmap;
pBmp->GetHBITMAP(1, &hBitmap);
CBitmap bmp;
bmp.Attach(hBitmap);
imgList.Add(&bmp, (255, 255, 255));
delete pBmp;
m_List.SetImageList(&imgList, LVSIL_SMALL);