You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS下.NET MAUI/MAUI Blazor获取屏幕尺寸结果不准确求助

在MacCatalyst下解决.NET MAUI获取屏幕尺寸不准确的问题

你遇到的问题是因为.NET MAUI的DeviceDisplay.Current.MainDisplayInfo返回的是逻辑像素,而你提到的3072×1920是屏幕的物理像素。Mac的Retina屏幕会通过缩放因子(Scale Factor)将物理像素映射为逻辑像素,用来适配不同的显示缩放设置。

你的设备返回的Width=3584、Height=2240,对应的是系统显示缩放设置里的“更多空间”选项,此时用逻辑像素乘以MainDisplayInfo中的Scale值,就能得到你需要的物理像素:

var displayInfo = DeviceDisplay.Current.MainDisplayInfo;
// 计算物理屏幕宽度
var physicalWidth = displayInfo.Width * displayInfo.Scale;
// 计算物理屏幕高度
var physicalHeight = displayInfo.Height * displayInfo.Scale;

举个例子:当系统设置为默认缩放时,逻辑像素会是2560×1600,乘以缩放因子1.2后正好是3072×1920的物理像素;而你当前的3584×2240逻辑像素,乘以对应缩放因子后也会匹配物理分辨率。

如果你的需求是获取当前系统设置的显示分辨率(而非物理硬件分辨率),可以直接使用MainDisplayInfo返回的Width和Height值,这是系统UI渲染时使用的逻辑尺寸。

内容的提问来源于stack exchange,提问作者hunterwendroff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 01:45:03