【WPF】如何获取屏幕比例
- [方法一:使用 SystemParameters.PrimaryScreenWidth 和 SystemParameters.PrimaryScreenHeight](#方法一:使用 SystemParameters.PrimaryScreenWidth 和 SystemParameters.PrimaryScreenHeight)
- [方法二:使用 System.Windows.Forms.Screen 类](#方法二:使用 System.Windows.Forms.Screen 类)
在WPF (Windows Presentation Foundation) 应用程序中,你可以通过使用 System.Windows.SystemParameters 类或者 System.Windows.Forms.Screen 类来获取屏幕的比例。这里提供两种方法来实现这一功能。
屏幕缩放比例 = 屏幕逻辑高度 / 屏幕实际高度
方法一:使用 SystemParameters.PrimaryScreenWidth 和 SystemParameters.PrimaryScreenHeight
SystemParameters 类提供了访问系统度量标准和常量的方法。你可以使用 PrimaryScreenWidth 和 PrimaryScreenHeight 属性来获取主屏幕的宽度和高度(以像素为单位),然后计算屏幕比例。
csharp
private void GetScreenInfo() {
double currentGraphics = System.Drawing.Graphics.FromHwnd(new System.Windows.Interop.WindowInteropHelper(Application.Current.MainWindow).Handle).DpiX / 96;
string screenHeight = (SystemParameters.PrimaryScreenHeight * currentGraphics).ToString();
string screenWidth = (SystemParameters.PrimaryScreenWidth * currentGraphics).ToString();
MessageBox.Show($"screenHeight : {screenHeight} + sscreenWidth : {screenWidth}");
double dpiScaleX = VisualTreeHelper.GetDpi(this).DpiScaleX;
double dpiScaleY = VisualTreeHelper.GetDpi(this).DpiScaleY;
MessageBox.Show($"dpiScaleX : {dpiScaleX} + dpiScaleY : {dpiScaleY}");
}
方法二:使用 System.Windows.Forms.Screen 类
如果你需要获取所有显示器的信息,或者需要更详细的屏幕信息,可以使用 System.Windows.Forms.Screen 类。这需要添加对 System.Windows.Forms 程序集的引用。
首先,在你的项目中添加对 System.Windows.Forms 的引用:
- 在解决方案资源管理器中右击你的项目。
- 选择"管理 NuGet 包"。
- 搜索 System.Windows.Forms 并安装。
然后,你可以使用以下代码来获取主屏幕的比例:
csharp
using System.Windows.Forms; // 需要添加对 System.Windows.Forms 的引用
// 获取主屏幕
Screen primaryScreen = Screen.PrimaryScreen;
// 获取屏幕分辨率
int screenWidth = primaryScreen.Bounds.Width;
int screenHeight = primaryScreen.Bounds.Height;
// 计算屏幕比例
double screenRatio = (double)screenWidth / screenHeight;
Console.WriteLine($"屏幕比例: {screenRatio}");
以上两种方法都可以用来获取屏幕的比例,而选择哪种方法取决于的具体需求。如果只是简单的获取主屏幕的比例,使用 SystemParameters 可能会更加方便。如果你的应用程序需要处理多显示器的情况,那么使用 System.Windows.Forms.Screen 将会更加灵活。