2009-10-02 132 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