无论我做什么,我都无法弄清楚如何使XNA游戏完全透明。
http://vitrite.vanmiddlesworth.org/vitrite/shot-full.png
这是我的意思的一个例子。因为命令提示符是部分透明的,我试图自己这样做。
甚至可以在XNA中使用吗?
答案 0 :(得分:0)
如果没有使用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);
请注意,这无助于为窗口边框提供任何伪造的透明度,只有渲染区域。
另见:Transparent window layer that is click-through and always stays on top
您也可以使用该线程中的一些信息。