我使用folow代码为列表控件创建缩略图
HDC hDC=::GetDC(hWnd);
HDC pDC=::CreateCompatibleDC(hDC);
HBITMAP bm=::CreateCompatibleBitmap(hDC,THUMBNAIL_W,THUMBNAIL_H);
HBITMAP oldBmp=(HBITMAP)SelectObject(pDC,bm);
img.StretchBlt(pDC,rcBorder);
CBitmap bmp;
bmp.Attach(bm);
m_imgLst.Add(&bmp,RGB(0,0,0));
大图像加载,它存储在CImage中
CImage img;
但缩略图为黑色,没有画出任何内容
以上代码
img.StretchBlt(PDC,rcBorder);
做不了。
答案 0 :(得分:3)
这是一个不完整且措辞不佳的问题。混合和匹配Windows API,MFC和GdiPlus很好,但没有提供足够的相关代码或解释,任何人都可以做的就是猜测你的问题。
说这是我的猜测。黑色位图的症状通常意味着您的位深度错误。我不知道你在使用CImage
做了什么,但上面的代码看起来很好,尽管缺少对API调用成功的任何验证。
我将进一步假设m_imgLst
是一个MFC CImageList
对象,在这种情况下,该对象上其他地方的.Create
调用可能存在错误,其位深或维度不兼容你现在想要添加的图像。
您可以通过检查.Add
的返回值来测试我的理论,它应该是新插入图像的索引,如果失败则为-1。