想象一下MDI應用程序中的一個文檔窗口,其中包含一個WPF子窗口,比如說一個側邊欄。如何獲得一個包含WPF像素和GDI(非wpf)像素的位圖?有沒有辦法使用本機C++從WPF窗口捕獲位圖?
我發現在製作Win7任務欄應用圖標懸停的縮略圖預覽時,我在WPF像素應該在的預覽部分中變黑。我目前的方法只是抓取文檔窗口的位圖捕獲。然後我得到一個DC的預覽,從它做一個內存DC並選擇我的位圖。然後我做一些尺寸調整,並將內存直流轉換爲真實的直流電。我猜測BitBlt操作沒有考慮到WPF像素是硬件加速的事實,因此需要從圖形硬件中抓取。 GDI中的所有東西都管理得很好,但是當沒有WPF子窗口時,預覽圖像看起來很好。
我想知道是否有可能從本地C++獲取WPF窗口的位圖。然後,我可以將其放到先前預覽的黑色區域上。
我在想,既然WPF是硬件加速的,應該有辦法從DirectX獲取像素。不知道我該怎麼做...... – 2010-04-08 22:44:01
是否有RenderTargetBitmap的本機版本? – 2010-04-08 22:53:19
我被告知可能最好的方法是創建一個C++/CLI互操作層,我可以從C++調用這個層,它會爲我返回一個CBitmap。在這種情況下,我可以使用RenderTargetBitmap來獲取WPF像素。 – 2010-04-09 14:12:56