在我的WPF应用程序中,我必须获得所有连接屏幕的分辨率,包括缩放比例。我发现Windows窗体包含此功能( Screen 类),但WPF不包含。为了避免混淆WinForms和WPF代码,我将此功能外包给了.NET Framework DLL。这是一个代码示例,用于获取第一个屏幕(在DLL内部)的缩放分辨率:
using System.Windows.Forms;
namespace Resolution
{
public class FirstScreen
{
public string GetResolution()
{
return Screen.AllScreens[0].Bounds.Width.ToString() + "x" + Screen.AllScreens[0].Bounds.Height.ToString();
}
}
}
结果(使用具有125%缩放比例的全高清屏幕):
为什么使用相同的DLL会得到不同的结果?如果这是错误的方法,如何在WPF中获取所有屏幕的缩放尺寸?
编辑:
这是我的简化WPF应用程序的代码(用于重建问题):
using System.Windows;
using Resolution;
namespace ScreenResProblem
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
FirstScreen fs = new FirstScreen();
tb.Text = fs.GetResolution();
}
}
}
这里是控制台应用程序的代码:
using System;
using Resolution;
namespace ConsoleRes
{
class Program
{
static void Main(string[] args)
{
FirstScreen fs = new FirstScreen();
Console.WriteLine(fs.GetResolution());
Console.ReadKey();
}
}
}