【发布时间】: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