全屏DirectX叠加?是的..再次C#

时间:2010-08-23 15:23:55

标签: c# c++ directx overlay

看起来这个问题在不同的背景下被多次询问过,我在为游戏制作叠加层方面取得了一些进展(这是用于信息数据等)。我也想让它像Steam和XFire一样可以互动。

我已经设法获得了一个直接游戏的叠加,而它在窗口模式...有点。

我已经看了遍布堆栈溢出和谷歌没有很多运气。

如果需要,我可以用C ++而不是C#来尝试。我知道C#,但我不认为自己是一个专业人士。只需要更好的解释。哎呀我愿意把一个很好的截屏/教程放在一起,如果我能让这个工作正常的话。

注意:我真的想用本机代码而不是库来做这件事,但是如果那里有一个好的免费库,我想查看一下。

示例: How to overlay graphics on Windows games?

http://www.gamedev.net/community/forums/topic.asp?topic%5Fid=359794

C# "Lock" an overlay form to the position of another window

更多信息: 我确实设法获得一个窗体覆盖游戏窗口,并将其父设置为SetParent。然而,这并不能很好地工作,因为它根本无法全屏工作,并且透明度不起作用。 (基本上有一个透明度键,TopMost设置为TRUE。) 我真的想找到一种不同的方法。

2 个答案:

答案 0 :(得分:1)

几年前我在德尔福做过这个。当时唯一的选择是将一个Native Win32 DLL注入进程,该进程将调用我的DLL DirectDraw函数,我会将其余的代理到真正的DirectDraw。如果程序将全屏切换到窗口或从窗口切换,这是唯一可以保证它可以工作的方法。我的DLL会创建一个内存中的共享文件空间,以便在它和我的程序之间进行通信。

我这样做的原因是在游戏中写下在TeamSpeak或Ventrilo中发言的人。

但是,CLR运行时对象无法使用此方法。您唯一的选择是查看C ++ Native DLL Injectrion / Wrapping。

答案 1 :(得分:-1)

我建议使用DirectShow库的RenderToSurface方法。它有你想要的几乎所有东西。 (DirectX曲面绘图)。

http://www.experts-exchange.com/Programming/Game_Development/Game_Graphics/DirectX/Q_20410452.html(一个例子)

http://msdn.microsoft.com/en-us/magazine/cc164112.aspx