【发布时间】:2012-12-28 19:41:06
【问题描述】:
我希望能够将内容打印到两个 hdcs,例如 hdcBuf 和 hdcBuf2。然后我想BitBlthdcBuf 到hdcBuf2,然后BitBlthdcBuf2 到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 中正确销毁,Graphics 对象是 GDI+
我需要所有这些 hdcs 的原因是我需要在一个对象之上同时打印一些东西。我有一张平铺地图,在绘制时我会遍历其中的一部分。我需要打印瓷砖和可能位于多个瓷砖上的对象,但瓷砖必须位于对象下方。只有一个 hdcBuf,我需要遍历地图两次才能做到这一点。
现在,我的代码只打印 hdcBuf 的内容,即瓷砖上的对象。
提前感谢您的帮助:)
【问题讨论】: