2010-02-14 51 views

回答

5

我寫了一個程序(不幸現在丟失了)在幾年前做了這樣的事情。

通過爲屏幕創建DC,創建兼容的位圖,然後使用BitBlt將屏幕內容複製到位圖中,可以檢索桌面圖像。然後使用GetDIBits以已知格式從此位圖中獲取像素。

此鏈接並不完全是這樣,但它演示了原理,儘管使用MFC。我找不到一個具體的Win32的例子:

http://www.flounder.com/screencapture.htm

對於毀滅性的效果,最好使用Direct3D或OpenGL。 (更多細節取決於您。)使用之前保存的位圖數據創建紋理。

通過與OpenGL或D3D相關聯的窗口,創建一個無邊框窗口,填充整個屏幕並且不進行繪畫或背景擦除。這將防止從桌面圖像切換到用於繪製的桌面圖像副本時出現閃爍。

(如果使用D3D,你還會發現GetMonitorInfo結合有用與IDirect3D9::GetAdapterMonitor和朋友,你需要爲每個監視器一個單獨的設備,因此,你需要知道的桌面對應的哪一部分到那個設備。)