У меня есть диалог с контролем изображения, и я хочу отобразить изображение моего списка изображений. Если я хочу отобразить растровое изображение (без списка изображений), позвонив
CBitmap m_bmp;
m_bmp.LoadBitmap(IDB_BITMAP);
m_picture.SetBitmap(m_bmp); //m_picuture is the member of the picture control
это работает, но мой список изображений не работает.
Вот мой код:
m_bmparr.LoadBitmap(IDB_BITMAPARR); //bitmap is 144x48 (4 bit)
m_imagelist.Create(48, 48, ILC_COLOR4, 0, 0); //3 * 48 = 144
m_imagelist.Add(&m_bmparr, RGB(255, 0, 255));
CBitmap* bitmap2;
IMAGEINFO imgInfo;
m_imagelist.GetImageInfo(1, &imgInfo); //Index 1 of imagelist
bitmap2 = CBitmap::FromHandle(imgInfo.hbmImage);
m_picture.SetBitmap(*bitmap2); //Show bitmap --> DOESN'T SHOW!! :(
Кто-нибудь может мне помочь?
Чтобы создать список изображений из большого растрового изображения:
m_imagelist.Create(IDB_BITMAPARR, 48, 0, RGB(255, 0, 255))
Где ширина значка 48, а ширина растрового изображения 144 (или n * 48).
использование ExtractIcon
создать новую иконку. Индекс начинается с нуля, поэтому используйте ExtractIcon(0)
для первого значка.
HICON hicon = m_imagelist.ExtractIcon(0);
ICONINFOEX iinfo;
iinfo.cbSize = sizeof(ICONINFOEX);
GetIconInfoEx(hicon, &iinfo);
m_picture.SetBitmap(iinfo.hbmColor);
//destroy hicon when finished