【问题标题】:How to put a WPF app on the secondary monitor with different refresh rate?如何将 WPF 应用程序放在具有不同刷新率的辅助显示器上?
【发布时间】:2022-06-11 12:54:09
【问题描述】:

我想在我的第二台显示器上以不同的刷新率启动我的 WPF 应用程序,第一台显示器的刷新率为 60 Hz,第二台显示器的刷新率为 50 Hz,我使用以下方法将我的应用程序放在第二台显示器上:

   public bool  PutToSecondaryMonitor()
       {
          var secondaryScreen = System.Windows.Forms.Screen.AllScreens.Where(s => !s.Primary).FirstOrDefault();

        if (secondaryScreen != null)
        {
            var workingArea = secondaryScreen.WorkingArea;
            this.Left = workingArea.Left;
            this.Top = workingArea.Top;
            this.Width = workingArea.Width;
            this.Height = workingArea.Height;
             return true;
        }
        return false;
       }

,但我的应用程序帧率始终是 60 Hz,请告诉我如何将 WPF 应用程序放在具有不同刷新率的辅助显示器上?

编辑: 这是sample project

注意:当我在第二台显示器上手动运行我的 WPF 应用程序 exe 文件时,我希望它的 fps 等于第二台显示器的刷新率,但它会锁定第一台显示器的刷新率。

【问题讨论】:

  • 所以你的应用出现在第二台显示器上?如何判断应用的刷新率?
  • @emoacht,是的,我使用 CompositionTarget.Rendering 和 Stopwatch 来测量帧速率,这是准确的,因为如果我将第一台监视器的帧速率更改为 50 Hz,它显示为 50。我也当监视器帧速率不是 50 Hz 时,有 50 Hz 的动画和视频卡顿。
  • 我明白了。我了解您将第二台显示器的刷新率设置为 50Hz,即使您将应用程序放在该显示器中,其帧速率仍显示为 60Hz。所以你的实际问题是造成这种差异的原因,对吧?不过我不知道。
  • 您能否准确地给我们一个重现代码,您可以在从监视器或其他监视器启动时用作参考测试?我没有复制你的意思。
  • @Simon Mourier,我添加了一个示例项目。

标签: c# wpf windows desktop-application


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-14
  • 2011-02-10
  • 1970-01-01
  • 2010-10-19
相关资源
最近更新 更多