GDI+只在内存DC上绘制单色
GDI+ only draws monochrome on memory DC
我正在尝试在MFC应用程序中进行一些双重缓冲,并尝试使用GDI+绘制内存DC。然而,尽管我调用了CreateCompatibleDC(),但我得到的只是单色图像。这是代码:
CDC bufferDC;
CBitmap bufferBitmap;
bufferDC.CreateCompatibleDC(&dc);
bufferBitmap.CreateCompatibleBitmap(&bufferDC, 300, 300);
bufferDC.SelectObject(bufferBitmap);
Graphics g(bufferDC);
g.Clear(Color::Green);
dc.BitBlt(0, 0, 300, 300, &bufferDC, 0, 0, SRCCOPY);
我看到的不是一块绿色的补丁,而是一个由抖动的黑白点组成的矩形。我甚至试着在g.Clear()调用后将位图保存到磁盘上。它确实是一个1位深度文件。
有什么问题吗?谢谢
创建位图以与原始DC兼容,而不是与内存DC兼容。
bitnmap和bufferDC都应该与dc
(无论它指的是什么设备)兼容,而不是位图兼容。。。具有自己的DC。
尝试将&dc
赋予CreateCopmpatibleBitmap
。
您的代码片段没有显示dc
变量的来源。这家伙可能包含一个单色位图,默认值。你根本不需要它。相反,将NULL传递给CreateCompatibleDC
,它将与您的显示格式相同,可能是彩色的。
相关文章:
- 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",我想将它们分别绘制在一个图表上
- 使用 stbi_write_png,如何将 0 和 1 的矩形字节数组转换为单色 png 文件?
- GDI+只在内存DC上绘制单色
- 如何使用QPainter绘制单色椭圆(无黑色边框)