【问题标题】:Projector Control/Display C#投影仪控制/显示 C#
【发布时间】:2018-12-02 21:49:01
【问题描述】:

我进行了一些搜索,但找不到与我正在寻找的东西相似的东西。我有兴趣了解如何使用 C# 在二级/三级显示器或投影仪上显示不同的内容。基本上,我想要实现的是在一个特定屏幕(主显示器)上拥有某种形式的演示者视图(lá Powerpoint),并在辅助屏幕或投影仪上输出。我从来没有真正尝试过开发具有多个显示输出的东西,因此任何指导都可能必须处于相当明显的水平。

如果有人能指出我在 C# 中如何处理这类事情的正确方向,那将不胜感激!

【问题讨论】:

    标签: c# projector


    【解决方案1】:

    只是为了扩展 Keven 的答案(我 +1 了), Screen.AllScreens 数组为您提供了一组 Screen 对象。 Screen 对象有一个名为 IsPrimary 的属性,您可以使用它来确定哪个是主屏幕,哪个是辅助屏幕(duh),它还有一个名为 WorkingArea 的属性,它是一个矩形,可以返回所有的坐标第二个屏幕。很酷的一点是,即使我们说辅助屏幕配置在主屏幕的左侧,WorkingArea.X 也将是一个负数,您可以在那里放置表单或其他任何东西。

    【讨论】:

      【解决方案2】:

      您可以使用System.Windows.Forms.Screen.AllScreens 属性访问Windows 知道的所有监视器的列表。如果您希望使用尚未由用户配置的显示器,则会变得更加困难 - 您可能需要使用 DirectX 初始化和访问显示适配器。

      【讨论】:

      • 作为相关子问题的一种方式:那么,如何最好在一个显示器上显示全屏输出,并在另一个显示器上保持控制?我知道在多显示器设置上使用其他全屏应用程序时,如果您尝试单击其他地方,您最终会导致全屏应用程序失去焦点并最小化自身。我应该如何解决这个问题 - 或者这不是你描述的方法中的问题? (我目前无法测试。)
      • 最简单的方法是创建一个全屏窗口并将其设置为 TopMost,使用来自 AllScreens 集合的信息来定位它。这样您就不会遇到传统上在单显示器全屏应用程序中看到的问题(它们会在失去焦点时将自身最小化。)
      • 非常感谢,我试试看:)
      【解决方案3】:

      您需要与之交互的主要类之一是Screen(它位于 WinForms 命名空间中)。一般来说,所有屏幕都被视为一组工作区域,您可以使用屏幕类来获取每个屏幕的属性。

      你可以得到所有这样的屏幕......

      Screen [] screens = Screen.AllScreens;
      

      Here 是一篇关于在 C# 中进行多监视器编程的短文。

      【讨论】:

        【解决方案4】:

        还记得在要在辅助屏幕上显示的窗口上将属性“StartPosition”设置为“Manual”,否则它将始终显示在主屏幕上。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-07
          • 1970-01-01
          • 1970-01-01
          • 2017-09-15
          • 2011-02-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多