2009-10-02 128 views
0

我需要獲取另一個窗體上面板的背景圖像。我將它用作DX應用程序中的紋理。我無法使用「CopyFromScreen」,因爲任何其他控件都將被包含在捕獲的圖像中。也許一種方法是將面板背景位圖複製到內存中以與其他應用程序共享 - 不知道如何在C#中執行此操作。 還是有一些GDI方法?C渲染面板背景#

非常感謝提前。

回答

0

你可以使用objPanel.DrawToBitmap()函數,它會給出整個面板上的內容。

+0

感謝Firoz。這是釘子。然而,作爲一個新手這一點,我該如何編組這個渲染到面板的EXE?我在C++中發現了很多類似的代碼示例,但找不到任何C#示例。我已經做了這個獨立的exe文件作爲一些破壞性測試後,我發現,與一個單獨的exe唯一出來的是exe只是停止渲染。但是,使用自定義面板中的所有代碼對主要應用程序和播放媒體的其他面板有影響。 – user183185 2009-10-05 08:30:41

+0

您可以將此位圖保存到tempraroy文件夾從第一個exe然後親密的第二個應用程序,然後第二個exe將從該路徑中選擇此位圖。您可以看到如何將密鑰發送到另一個應用程序http://stackoverflow.com/questions/732521/send-key-strokes-to-another-application-c – Firoz 2009-10-05 10:19:28

+0

謝謝大家的幫助。最後,我設法將C++的舊版本轉換爲C#,以滿足我所需的MMF機制。使用文件本來就太慢了。它按我需要的方式工作。再說一遍 – user183185 2009-10-07 09:58:54

0

您是否檢查過Panel控件,看看它是否有任何可以以位圖格式返回背景圖像的屬性?

+0

該位圖需要跨進程訪問。一個單獨的exe渲染DX到這個面板的表面。爲了創建僞透明度,我在DX exe中使用了CopyFromScreen,然後將其用作DX紋理。但是,如果我不小心將另一個控件拖放到頂部,則會在EXE執行捕獲時渲染它或它的一部分。有沒有一種方法可以跨越流程獲取面板位圖?或者有沒有獲得面板位圖,而沒有獲得任何其他頂部圖像的方法? – user183185 2009-10-02 15:38:23