C# I';我想用XNA做一个覆盖图。在透明化方面有困难吗

C# I';我想用XNA做一个覆盖图。在透明化方面有困难吗,c#,xna,transparency,C#,Xna,Transparency,无论我做什么,我都不知道如何使XNA游戏完全透明 这是我的意思的一个例子。因为命令提示符部分是透明的,我自己也在尝试这样做 在XNA中有可能吗?如果不使用XNA因其D3D版本而不支持的接口,就很难使其真正透明,但有一些解决方法可以满足您的需要 您可以通过挂接Windows API并抓取窗口最后渲染的“客户端区域”(桌面只是一个特殊窗口)的图像来获得类似的外观。在您的例子中,您可以获得所有其他重叠的窗口,抓取客户端区域,使用您的相对位置/大小剪裁它们,然后在着色器中将它们混合在一起。警告:这可能

无论我做什么,我都不知道如何使XNA游戏完全透明

这是我的意思的一个例子。因为命令提示符部分是透明的,我自己也在尝试这样做


在XNA中有可能吗?

如果不使用XNA因其D3D版本而不支持的接口,就很难使其真正透明,但有一些解决方法可以满足您的需要

您可以通过挂接Windows API并抓取窗口最后渲染的“客户端区域”(桌面只是一个特殊窗口)的图像来获得类似的外观。在您的例子中,您可以获得所有其他重叠的窗口,抓取客户端区域,使用您的相对位置/大小剪裁它们,然后在着色器中将它们混合在一起。警告:这可能是性能密集型更新,这取决于有多少窗口,你有“下面”你自己的。我建议挂接窗口中的更新,以便仅在发生更改或窗口移动等情况下进行捕获

在Windows API中查看以下内容:

[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
[DllImport("user32.dll")]
public static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags);
请注意,这将不会帮助您的窗口边框提供任何伪造的透明度,但只能提供渲染区域

另见:


您可能还可以使用该线程中的一些信息。

您能告诉我们您到目前为止有哪些代码。。。