【发布时间】:2010-11-16 13:21:02
【问题描述】:
我正在用 c++ gdi gdi+ 编写程序。 使用 gdi+ api 在 gdi+ 位图上绘制大图像很慢。 于是我就用下面的方式来画了:
Bitmap img(xxx);
Graphics gr(&img);
HDC dc = gr.GetHDC();
::StretchDIBits(
dc,
rec.left, rec.top,
(rec.right - rec.left), (rec.bottom - rec.top),
m_recRegin.left , m_recRegin.top,
m_recRegin.right - m_recRegin.left, m_recRegin.bottom - m_recRegin.top,
XXX, XXX, DIB_RGB_COLORS, SRCCOPY);
gr.ReleaseHDC(dc);
这段代码可以完美运行一段时间。 但是当系统范围的池已满时,通过创建大量具有大尺寸 CBitmap 的兼容 DC。好像无法在 Bitmap 上绘制任何东西。
发生了什么?当这部分代码失败时,我仍然可以使用 GDI+ API 绘制图形
GetLastError() 返回 8。
非常感谢!
【问题讨论】:
-
请在调用 StretchDIBits() 失败后使用 GetLastError() 返回的值更新我们。