CListCtrl和缩略图无法绘制
CListCtrl and thumnail fails to draw
我使用下面的代码为列表控件创建一个缩略图
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;
但是缩略图是黑色的,什么也没画
上面的代码
rcBorder img.StretchBlt (pDC);
这是一个不完整且措辞拙劣的问题。混合和匹配Windows API, MFC和GdiPlus是好的,但没有给出足够的相关代码或解释,所有人都可以猜测你的问题。
这是我的猜测。位图黑色的症状通常意味着您的位深度错误。我不知道你在用CImage
做什么,但是上面的代码看起来很好,尽管在调用的API上缺少任何成功的验证。
我将进一步假设m_imgLst
是一个MFC CImageList
对象,在这种情况下,可能的错误是在该对象的其他地方的.Create
调用中,您现在试图添加的图像具有不兼容的位深度或尺寸。
您可以通过检查.Add
的返回值来测试我的理论,它应该是新插入图像的索引,如果失败则为-1。
相关文章:
- QuadTree只在窗口的右上角绘制
- 绘制旋转的三角形
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 如何在QT中的自定义视频小工具t上绘制矩形
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 绘制顺时针三角形,重新排序点
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- SFML 文本未绘制在窗口上
- 如何在快板的屏幕中显示子位图的绘制?
- 如何绘制自定义形状的元素?
- QPainter 将 QBrush 设置为 在 QT/C++ 中绘制文本
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- 绘制文本问题
- 在 QT C++中绘制/操作多边形
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 在现代OpenGL中,绘制GL_TRIANGLE奇怪的z轴行为的填充圆
- CListCtrl和缩略图无法绘制
- 所有者绘制的任务栏缩略图预览