hdcBuf
と言う2つのhdcsに物事を印刷できるようにしたいhdcBuf2
。次に、クライアント ウィンドウである に移動しBitBlt
hdcBuf
ます。これが私が今持っているコードです:hdcBuf2
BitBlt
hdcBuf2
hdc
hdc = GetDC(hWnd);
hdcBuf2 = CreateCompatibleDC(hdc);
hbmBackBM2 = CreateCompatibleBitmap(hdc, client.right, client.bottom);
hbmOldBackBM2 = (HBITMAP)SelectObject(hdcBuf2, hbmBackBM2);
hdcBuf = CreateCompatibleDC(hdcBuf2);
hbmBackBM = CreateCompatibleBitmap(hdcBuf2, client.right, client.bottom);
hbmOldBackBM = (HBITMAP)SelectObject(hdcBuf, hbmBackBM);
Graphics g(hdcBuf);
Graphics g2(hdcBuf2);
//drawing stuff with both g and g2
BitBlt(hdcBuf2,0,0,client.right,client.bottom,hdcBuf,0,0,SRCCOPY);
BitBlt(hdc,0,0,client.right,client.bottom,hdcBuf2,0,0,SRCCOPY);
すべての HDC と HBITMAP はグローバルであり、WM_DESTROY で適切に破棄され、グラフィック オブジェクトは GDI+ です。
これらすべての hdcs が必要な理由は、あるオブジェクトを別のオブジェクトの上に同時に印刷する必要があるからです。タイル マップがあり、描画時にその一部をループします。タイルと、複数のタイルにある可能性のあるオブジェクトを印刷する必要がありますが、タイルはオブジェクトの下にある必要があります。hdcBuf が 1 つだけの場合、これを行うにはマップを 2 回ループする必要があります。
現在、私のコードはhdcBuf
、タイル上のオブジェクトのコンテンツのみを出力します。
よろしくお願いします:)