.net MAUI 如何获取DPi/PPi跨平台

问题描述 投票:0回答:1

获取DPI/PPI

你好,

如何获得毛伊岛每个平台的 DPI 或 PPI?

我只能找到DeviceDisplay.MainDisplayInfo.Density,但这只给我显示的缩放比例,如1,2等等...
它还提供以像素为单位的高度和宽度,但没有显示英寸信息或我可以计算 dpi 或 ppi 值的信息。

此外,我只能找到一些 Windows 特定的方法,但这对我没有帮助,因为我也需要 Android 和 iO。

为什么我需要这个?
因为我喜欢将我的skiashap文本、linex等转换为真正的厘米,反之亦然。

感谢您的每一次帮助!

c# maui dpi skiasharp ppi
1个回答
0
投票

虽然没有直接的方法来获取移动设备的PPI。您可以尝试使用平台代码自行计算DPI值。

您可能知道移动设备 PPI 的定义,它代表每英寸像素。只要知道屏幕尺寸和屏幕像素,就可以得到PPI值。

例如,Android 有 DisplayMetrics 类,它可以描述有关显示器的一般信息。您可以尝试以下代码来计算PPI

#if ANDROID
            var dm = Microsoft.Maui.ApplicationModel.Platform.CurrentActivity.Resources?.DisplayMetrics;
            var x = Math.Pow(dm.WidthPixels / dm.Xdpi, 2);
            var y = Math.Pow(dm.HeightPixels / dm.Ydpi, 2);
            var ScreenSize = Math.Sqrt(x + y);
        
            var ScreenPixels = Math.Pow(dm.WidthPixels, 2) + Math.Pow(dm.HeightPixels, 2);
            var a = Math.Sqrt((double)ScreenPixels);

            var ppi = a / ScreenSize;

#endif

对于iOS,我认为没有API可以获取PPI值。您可以参考如何以编程方式精确找到PPI。由于我们无法获取iPhone的物理屏幕尺寸,因此无法计算PPI,或者我们必须在程序中硬编码每个设备的屏幕尺寸或PPI。这意味着当新的 iOS 设备发布时我们必须进行更新。

这里还有一个类似的问题,如何使用 xamarin.iOS 项目获取设备每英寸的点数或像素?

© www.soinside.com 2019 - 2024. All rights reserved.