Получить DPI/PPI
Привет,
Как получить DPI или PPI на Мауи для каждой платформы?
Я смог найти только DeviceDisplay.MainDisplayInfo.Density, но это дает мне только масштаб дисплея, например 1,2 и так далее...
Он также предоставляет высоту и ширину в пикселях, но не предоставляет информацию о дюймах дисплея или что-то еще, что я мог бы рассчитать значение dpi или ppi.
Кроме того, я смог найти только некоторые подходы, специфичные для Windows, но это мне не помогло, поскольку мне это нужно и для Android, и для iOS.
Зачем мне это нужно?
Потому что мне нравится конвертировать текст Skiashap, Linex и т. д. в реальные см и наоборот.
Спасибо за каждую помощь!
Хотя прямого способа получить 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.
Вот также аналогичная проблема с SO: Как получить баллы или пиксели на дюйм устройства с помощью проекта xamarin.iOS?
Спасибо за подробный ответ и ваш код, который мне очень помог. Я делаю это сейчас для конкретной платформы, и это работает.
В MAUI нет прямого API для получения информации PPI/DPI. Вы можете подать запрос на добавление функции на GitHub.