【问题标题】:Create a overlay screen while a game/program is running?在游戏/程序运行时创建覆盖屏幕?
【发布时间】:2011-02-03 23:40:26
【问题描述】:

有谁知道我如何在程序运行时创建屏幕覆盖?主要是在游戏运行时。如果有人使用过 xFire 或 Steam,它们会使用此功能。

我创建了一个启动游戏/程序然后最小化的 winform。可以在同一个winform中创建叠加层吗?谢谢您的帮助! :)

【问题讨论】:

    标签: c# c++ winforms screen overlay


    【解决方案1】:

    我假设您的意思是 叠加层

    不,没有办法为大多数使用 Windows 窗体的游戏创建一个。您需要手动附加到 DX 表面。最好的方法是use native C/C++;理论上可以使用 C# 来做到这一点,但它会非常缓慢和笨拙。

    【讨论】:

    • 是的,对不起。我的意思是覆盖,而不是溢出。那么当 C# 程序运行游戏时,我可以让 C++ 程序运行吗? process.start 也许?知道如何让 C++ 程序覆盖游戏吗?当某个键被按下时可能?这意味着 C++ 程序需要一直运行。
    • 通常情况下,覆盖过程在游戏开始前开始,并等待在游戏过程中创建 DX 表面,然后挂接。您可以在游戏破坏 DX 表面时让覆盖自动关闭,如果你不希望它闲逛等待它再次启动。
    • 好吧,你错了——你可以将托管代码附加到无人管理的代码上,这还不错。
    • 您可以将控制进程的托管代码附加到非托管,当然,但是如果您尝试对所有图形代码使用托管代码(使用 PInvoke 与 DX 对话),由于除了最强大的计算机之外的所有计算机上的上下文切换/编组开销。您当然可以使用 SlimDX 来弥补差距,但那是一个 C++/CLI 库,因此您不再真的在 C# 中这样做了。
    • 只是一个小修正,SlimDX 不是 C++/CLI,因为它适用于 Xbox 360。
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    相关资源
    最近更新 更多