正常的方式來捕獲窗口的圖像是調用:如何將Direct3D/WPF/DWM窗口捕獲到位圖中?
HDC SharedWndDC = GetWindowDC(SharedWnd);
BitBlt(BitmapDC, 0, 0, width, height, SharedWndDC, 0, 0, SRCCOPY /* |CAPTUREBLT */);
ReleaseDC(SharedWnd, SharedWndDC);
其中運行DWM的系統上,很好地抓住剛有問題的窗口,即使它被其他窗口或部分關閉重疊屏幕,或什麼。
但是,它不適用於某些窗口(大概是那些使用WPF的),並且對玻璃區域做了些有趣的事情。基本上,GDI捕獲不適用於非GDI的東西。
我明白我真正想要的是獲取Direct3D「後臺緩衝區」或「前臺緩衝區」,但我見過的大量示例都是爲了捕獲整個屏幕或桌面。不知道Direct3D,我找不到一個示例或簡單的聲明,說明如何獲取現有窗口的適當對象,然後我可以從中獲取緩衝區。
某種靈魂至少能表現出缺失的一塊嗎?
-John