Visual Studio C ++ MFC: отображение растрового изображения из списка изображений

У меня есть диалог с контролем изображения, и я хочу отобразить изображение моего списка изображений. Если я хочу отобразить растровое изображение (без списка изображений), позвонив

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!! :(

Кто-нибудь может мне помочь?

1

Решение

Чтобы создать список изображений из большого растрового изображения:

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
1

Другие решения


По вопросам рекламы [email protected]