私は 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 を多数作成して、システム全体のプールがいっぱいになった場合。ビットマップには何も描画できないようです。
どうしたの?コードのこの部分が失敗した場合でも、GDI+ API を使用してグラフィックスを描画できます
GetLastError() は 8 を返します。
どうもありがとう!