作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我写了下面的代码,它试图获取一个 32x32 位图(通过 MFC 的资源系统加载)并将其转换为 16x16 位图,因此它们可以用作 CListCtrl 的大 CImageList 和小 CImageList。但是,当我打开 CListCtrl 时,所有图标都是黑色的(在小 View 和大 View 中)。在我开始玩调整大小之前,一切都在大 View 中完美运行。
我做错了什么?
// Create the CImageLists
if (!m_imageListL.Create(32,32,ILC_COLOR24, 1, 1))
{
throw std::exception("Failed to create CImageList");
}
if (!m_imageListS.Create(16,16,ILC_COLOR24, 1, 1))
{
throw std::exception("Failed to create CImageList");
}
// Fill the CImageLists with items loaded from ResourceIDs
int i = 0;
for (std::vector<UINT>::iterator it = vec.begin(); it != vec.end(); it++, i++)
{
CBitmap* bmpBig = new CBitmap();
bmpBig->LoadBitmap(*it);
CDC bigDC;
bigDC.CreateCompatibleDC(m_itemList.GetDC());
bigDC.SelectObject(bmpBig);
CBitmap* bmpSmall = new CBitmap();
bmpSmall->CreateBitmap(16, 16, 1, 24, 0);
CDC smallDC;
smallDC.CreateCompatibleDC(&bigDC);
smallDC.SelectObject(bmpSmall);
smallDC.StretchBlt(0, 0, 32, 32, &bigDC, 0, 0, 16, 16, SRCCOPY);
m_imageListL.Add(bmpBig, RGB(0,0,0));
m_imageListS.Add(bmpSmall, RGB(0,0,0));
}
m_itemList.SetImageList(&m_imageListS, LVSIL_SMALL);
m_itemList.SetImageList(&m_imageListL, LVSIL_NORMAL);
最佳答案
需要为bigDC创建一个compatibleDC。即先获取当前窗口的 DC,然后做类似的事情
bigDC.CreateCompatibleDC(&myWindowHdc);
关于c++ - 缩放 CBitmap - 我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779294/
我是一名优秀的程序员,十分优秀!