c++ - Visual Studio C++ MFC : Displaying bitmap from imagelist

标签 c++ bitmap mfc imagelist

我有一个带有图片控件的对话框,我想显示我的图像列表的图像。如果我想通过调用显示位图(无图像列表)

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

关于c++ - Visual Studio C++ MFC : Displaying bitmap from imagelist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32369602/

相关文章:

c++ - 在 C++ 中初始化静态 std::map<int, STRUCTURE>

c++ - 在 MFC C++ 中查找 Indexof

android TouchImageView 高度不改变

c++ - 无法使用 Unicode 特殊字符设置窗口文本

c# - 如何在windowsmobile的listview中使用doublebuffer

C++ 构造函数代码...这叫什么?

c++ - 什么是具有自己类类型的良好二维数组替代方案

java - 使用 Java/JNI 时 Linux 上的信号处理

java - android canvas.drawBitmap() 用一种颜色绘制整个位图

Android - 填充折线图下方的颜色