【WPF】如何获取屏幕比例

【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 的引用:

  1. 在解决方案资源管理器中右击你的项目。
  2. 选择"管理 NuGet 包"。
  3. 搜索 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 将会更加灵活。

相关推荐
LaughingZhu6 小时前
Product Hunt 每日热榜 | 2026-04-05
前端·数据库·人工智能·经验分享·神经网络
LaughingZhu13 小时前
移动端 AI 的价值重估:设备端智能的拐点
大数据·人工智能·经验分享·搜索引擎·语音识别
IOFsmLtzR14 小时前
Flink Agents 源码解读 --- (5) --- ActionExecutionOperator
microsoft·flink·wpf
LaughingZhu18 小时前
Anthropic 收购 Oven 后,Claude Code 用运行时写了一篇护城河文章
大数据·人工智能·经验分享·搜索引擎·语音识别
卡梅德生物科技小能手19 小时前
CD301(巨噬细胞半乳糖型凝集素):免疫稳态调控与靶向治疗的研究进展
经验分享·深度学习·生活
oi..21 小时前
Python POST请求练习-ua
开发语言·网络·经验分享·python·安全·web安全·网络安全
智者知已应修善业1 天前
【51单片机4个IO实现16按键可扩展独立按键64矩阵驱动显示矩阵原值】2023-5-8
c++·经验分享·笔记·算法·51单片机
久菜盒子工作室1 天前
高等教育学|第一章高等教育概述
经验分享·笔记·课程设计
庆苏_1 天前
VitePress适合做个人博客或网站吗?
经验分享·网站制作·开发框架·vitepress·字体制作
guoluashuichuli2 天前
锅水氯离子蒸汽冷凝水氯根锅炉给水氯根指标检测的目的及氯离子超标需要注意的六个问题
经验分享·科技