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
相关产品推荐
相关产品推荐

