首页 > 解决方案 > 如何将像素转换为 xamarin.forms 单位?

问题描述

  1. 每英寸有 160 个单位。2.如果我创建了一个72 dpi的Photoshop文件,那么每英寸将有 72 个点。3.如果元素是Photoshop中的高度,那么我必须在其中设置什么?88pxxamarin

如果手机是 360dpi,那么 xamarin 中的高度应该是:88 / 72 * 160 / 2?但这是不对的。

标签: xamarin.forms

解决方案


我知道每个平台中的单位,我只想知道如何从像素中获取单位

您可以使用Xamarin.Essentials获得Screen density如下信息:

// Get Metrics
var mainDisplayInfo = DeviceDisplay.MainDisplayInfo;
// Screen density
var density = mainDisplayInfo.Density;

如果密度是3iOS 设备,像素是88,那么 iOS 中有88/3单位。

如果手机是 360dpi

这意味着它应该是Android设备,屏幕密度也可以通过计算360/160 = 2.25。然后有 88/2.25 个单位要设置HeightRequest

=================================更新================= ==============

如果XamlBoxView中有一个如下:

<BoxView x:Name="MyBoxView" BackgroundColor="CadetBlue" HorizontalOptions="Fill"/>

以及效果:

在此处输入图像描述

现在我将打印MyBoxView.Width. 结果是:

Console.WriteLine("++++MyBoxView++++" + MyBoxView.Width);

++++MyBoxView++++411.428571428571

如果你var density = mainDisplayInfo.Density;用来获取密度,你会得到Screen Density::2.625. (我的设备是Piexl_2_pie_9_0 api 28 模拟器)

你知道屏幕宽度的大小是1080像素,但是宽度是411.428571428571. 这应该意味着WidthRequest.

如果你放411.428571428571 * 2.625,你会得到1080像素。


推荐阅读