本文主要是介绍CImageList::GetImageInfo取到的bitmap不能用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
开发过程中遇到一个问题,CImageList::GetImageInfo取到的HBITMAP不能直接使用,比如取颜色值都是空的。
IMAGEINFO info;
m_comboColor.GetImageList()->GetImageInfo(index, &info);
//HBITMAP hbmp = info.hbmImage;
//必须复制一份再进行操作,否则取不到值
HBITMAP hbmp = (HBITMAP)CopyImage(info.hbmImage,
IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG);
//如果想得到指定子图像数据,必须根据指定子图像区域rcImage从整个图像hbmImage中取出数据
RECT rect = info.rcImage;//对于索引子图像的范围
DeleteObject(hbmp);
必须调用CopyImage复制一份出来才能正常使用。
还有个点要注意,取出来的IMAGEINFO 里的HBITMAP 是CImageList里存贮的图像合起来的一整个大的图像,需要根据rcImage再取出对应区域的子图像(好坑啊)。
参考地址:https://bbs.csdn.net/topics/70237348
这篇关于CImageList::GetImageInfo取到的bitmap不能用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!