【问题标题】:How to draw above the Windows 8 Metro interface?如何在 Windows 8 Metro 界面上方绘制?
【发布时间】:2013-12-04 04:57:54
【问题描述】:

我想绘制位于所有其他界面(包括 Windows 8 新主屏幕)之上的图形。你会怎么做呢?在 Windows 7 及以下版本中,它就像显示一个透明的全屏窗口一样简单,但现在由于桌面与操作系统的其余部分分离,这不再可能了。

原因是我需要显示两个独立于 Windows 鼠标光标的光标。我正在为Wii Remote(使用传感器条指针)开发多点触控模拟软件,目前我只是设置光标位置并通过摇动 +1 和 -1 像素来唤醒它。但它会干扰触摸,所以我在使用触摸模拟时必须禁用它。它目前有效,但我想添加多点触控支持,以便您可以使用 Wii Remote 进行缩放和旋转。触摸功能已准备就绪,但您希望在按住一个触摸点并使用 Wii Remote 选择另一个触摸点时看到光标,并且在按住第一个触摸点时,Windows 光标无法移动到其他任何地方,因为它坚持接触点。

我已经看到如何通过为屏幕获取一个 Graphics 对象来直接绘制到屏幕上,但它不起作用,因为它完全不受管理,所以图形保持可见直到其他东西刷新该区域。

那么,有什么建议吗?

涉及的项目称为 Touchmote,可在 touchmote.net 上以源代码和可安装测试版的形式获得。

【问题讨论】:

    标签: c# graphics windows-8


    【解决方案1】:
    1. Demand the UIAccess integrity level in application manifest 通过在 requestedPrivileges 属性中指定 UIAccess=”true”。
    2. 使窗口位于最顶部(通过SetWindowPos 更改位置或在 WinForms/WPF 中设置 TopMost 属性)
    3. Sign the application using a digital certificate that chains up to a trusted root in the local machine Trusted Root Certification Authorities certificate store.
    4. a secure location in the file system 直接运行(即not from a debugger)。之后您可以附加调试器。

    请注意,这会使您的应用程序运行提升,您可能有issues when you need to connect to your application from a lower integrity level

    【讨论】:

    • 非常感谢!我不确定如何正确签署申请,是否有任何限制和费用?我想将它作为一个开源应用程序分发。
    • 对于源代码分发,您可以编写构建步骤来创建和安装受信任的根 CA,然后编写代码签名证书来签署文件。对于二进制分发,您可以从本地计算机受信任的根 CA 存储中的 CA 购买代码签名证书。
    【解决方案2】:

    您正在尝试执行的操作已经有一个界面:触摸注入。您可以指定您有联系人在范围内但不与屏幕接触,屏幕上会出现一个小圆圈。你不需要自己画圆圈;触控系统会为您完成。

    【讨论】:

    • 谢谢你的回答,我已经在使用触摸注入了,但是我想在不触摸的时候显示一个光标来知道从哪里开始触摸输入:) 但是我会看看江的解决方案
    • 您说联系人在范围内,但没有在联系人中。这表示“如果您进行触摸操作,这就是触摸的位置。”这似乎与您正在尝试做的事情相匹配。
    • 谢谢!!我已经尝试过“悬停”方法,但没有看到任何光标,但阅读您的答案让我再次尝试,我注意到 TOUCH_FEEDBACK_INDIRECT 常量。现在完美运行!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多