高性能を実現するために、大きな CompatibleDC を作成し、その上に大きな画像を描画してから、画像の一部を他の DC に bitblt したいと考えています。
次のコードを使用して、互換性のあるメモリ DC を作成しています。しかし、rect が 5000*5000 などのように非常に大きくなると、作成された CompatibleDC が不安定になります。うまくいくこともあれば、失敗することもあります。私のコードに何か問題がありますか?
input :pInputDC
output:pOutputMemDC
{
pOutputMemDC=new CDC();
VERIFY(pOutputMemDC->CreateCompatibleDC(pInputDC));
CRect rect(0,0,nDCWidth,nDCHeight);
CBitmap bitmap;
if (bitmap.CreateCompatibleBitmap(pInputDC, rect.Width(), rect.Height()))
{
pOutputMemDC->SetViewportOrg(-rect.left, -rect.top);
m_pOldBitmap = pOutputMemDC->SelectObject(&bitmap);
}
CBrush brush;
VERIFY(brush.CreateSolidBrush(RGB(255,0, 0)));
brush.UnrealizeObject();
pOutputMemDC->FillRect(rect, &brush);
}