看起来这个问题在不同的背景下被多次询问过,我在为游戏制作叠加层方面取得了一些进展(这是用于信息数据等)。我也想让它像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。) 我真的想找到一种不同的方法。
答案 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(一个例子)