当前位置: 首页 > article >正文

【WPF】如何获取屏幕比例

【WPF】如何获取屏幕比例

  • 方法一:使用 SystemParameters.PrimaryScreenWidth 和 SystemParameters.PrimaryScreenHeight
  • 方法二:使用 System.Windows.Forms.Screen 类

  在WPF (Windows Presentation Foundation) 应用程序中,你可以通过使用 System.Windows.SystemParameters 类或者 System.Windows.Forms.Screen 类来获取屏幕的比例。这里提供两种方法来实现这一功能。

  屏幕缩放比例 = 屏幕逻辑高度 / 屏幕实际高度

方法一:使用 SystemParameters.PrimaryScreenWidth 和 SystemParameters.PrimaryScreenHeight

  SystemParameters 类提供了访问系统度量标准和常量的方法。你可以使用 PrimaryScreenWidth 和 PrimaryScreenHeight 属性来获取主屏幕的宽度和高度(以像素为单位),然后计算屏幕比例。

        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 并安装。

  然后,你可以使用以下代码来获取主屏幕的比例:

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 将会更加灵活。


http://www.kler.cn/a/374648.html

相关文章:

  • 「微服务」持续测试如何做?
  • Vulnhub靶机——DC-1
  • NLP segment-01-聊一聊分词 AI 的基础
  • Marin说PCB之电源的Surface Current Density知多少?
  • 使用UDP实现发送和接收
  • Leetcode 二叉树中的最大路径和
  • BFH的原理及用法
  • 【VS中Git同步提交 报错:访问.vs/FileContentIndex/xxx.vsidx权限不允许】
  • DAO模式及单例模式
  • 查询引擎的演变之旅 | OceanBase原理解读
  • 2024 Rust现代实用教程 Borrowing借用 Lifetime生命周期
  • python将mongodb中的数据写入到postgresql中
  • 华为实时视频使用FLV播放RTSP流
  • ssm药店管理系统-计算机毕业设计源码81276
  • 【数据结构与算法】第7课—数据结构之队列
  • 超子物联网HAL库笔记:准备篇
  • Hive的数据存储格式
  • 设计模式 策略模式 场景Vue (技术提升)
  • WebMvcConfigurer
  • React 中useState 原理
  • JIME智创:抖音创作者的AI绘画与视频生成创作神器
  • 无人机之卫星通信技术篇
  • ‌Spring MVC的主要组件有哪些?
  • Redis常见面试题总结(下)
  • Redis高频面试题
  • Oracle 大表添加索引的最佳方式