【问题标题】:Always on top, even in fullscreen-games即使在全屏游戏中也始终处于领先地位
【发布时间】:2014-02-25 21:48:16
【问题描述】:

如何将 Windows 窗体应用程序置于屏幕上的所有内容之上?

在运行全屏游戏时,仅设置 topmost-property 是不够的。

如果有人有旧表单的解决方案,我也会很高兴

我在这个论坛上看到很多帖子说这是不可能的,但我知道这不是因为我见过很多应用程序(fraps、teampeak overlay、xfire 等)可以做到这一点。

【问题讨论】:

  • 想象一下,如果两个应用程序同时尝试这样做blogs.msdn.com/b/oldnewthing/archive/2011/03/10/10138969.aspx
  • Fraps 是通过 DirectX/OpenGL 实现的。如果您愿意使用低级别的图形 API,这是可能的,但不是真正的常规窗口形式(不包括 Form.TopMost)。
  • 你在使用 MS-windows 吗?
  • 喜剧选项:截取 Windows 窗体应用程序的屏幕截图,将其打印出来,然后将其粘贴到您的屏幕上。严肃的评论 - Nathan 是对的,但掩盖了这样一个事实,即在 C# 以外的非托管语言中,这可能更容易,因为在 C# 中你可以更好地控制绘画。我怀疑 teampeak 使用 Winforms 来做他们的事情——他们可能不得不推出很多自己的绘图逻辑。
  • @PeteBaughman 这绝对是真的,在其他语言中这可能更可行。我只是在 windows 窗体的上下文中发言,因为这是被问到的。

标签: c# overlay topmost


【解决方案1】:

如果您想使用图形库始终在屏幕上显示某些内容,您可能需要启动 here on SO。有可用的包装库,如用于 OpenGL 的 OpenTK。如果你想走 DirectX 路线,你需要加载 C++ 库并使用 P/Invoke 访问它们。从on msdn 开始有一个很好的教程。 DirectX 的包装器也以SharpDX 的形式存在。

【讨论】:

    猜你喜欢
    • 2011-12-28
    • 2010-12-27
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多