Конвертируйте Xamarin.Формы измеряют единицы измерения в пикселях

#xamarin #xamarin.forms

#xamarin #xamarin.forms

Вопрос:

Как я могу преобразовать, например, view.WidthRequest значение в пиксели платформы? Я ищу метод, подобный Device.ConvertToPixels(10) .

Я хочу использовать его для рисования SkiaSharp. Например, я хочу нарисовать круг с обводкой = 10 дюймов (единицы измерения xamarin.forms), который будет преобразован в пиксели при рисовании.

Ответ №1:

Умножьте MainDisplayInfo.Density на (единицы измерения xamarin.forms), и вы получите эти пиксели.

Я создал метод.

     double XamDIUConvertToPixels(double XamDIU)
    {
        var desplayinfo = DeviceDisplay.MainDisplayInfo;
        var pixcels = desplayinfo.Density * XamDIU;
        return pixcels;
    }
  

Отображение устройства должно выполняться в потоке пользовательского интерфейса, иначе в iOS будет выдано исключение.

прочитайте это:https://learn.microsoft.com/en-us/xamarin/essentials/device-display?tabs=ios#platform-differences

Ответ №2:

Вы также можете сделать масштаб в верхней части чертежа, а затем использовать любые единицы измерения, которые вам нравятся.

Например, на 2-кратном дисплее вы можете сделать canvas.Scale(2) , а затем нарисовать, как если бы это было 1x.

В случае Xamarin.Событие рисования форм, есть аргументы события, которые содержат всю необходимую информацию:

 canvas.Scale(e.Info.Width / view.Width);
  

Кроме того, вы можете взглянуть на этот пост в блоге, где я демонстрирую некоторые вещи:https://dotnetdevaddict.co.za/2020/01/12/who-cares-about-the-view-anyway /

Ответ №3:

Вы могли бы попробовать приведенный ниже код:

В Android:

 var dp = 100;
        int pixel = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, dp, this.Resources.DisplayMetrics);
  

В Xamarin.Формы, попробуйте использовать службу зависимостей.
https://learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/dependency-service/introduction

Комментарии:

1. Как насчет iOS?

2. Для ios нет необходимости конвертировать. Формат получаемого значения — пиксель.