.net MAUI Как получить кроссплатформенность DPi/PPi

Получить DPI/PPI

Привет,

Как получить DPI или PPI на Мауи для каждой платформы?

Я смог найти только DeviceDisplay.MainDisplayInfo.Density, но это дает мне только масштаб дисплея, например 1,2 и так далее...
Он также предоставляет высоту и ширину в пикселях, но не предоставляет информацию о дюймах дисплея или что-то еще, что я мог бы рассчитать значение dpi или ppi.

Кроме того, я смог найти только некоторые подходы, специфичные для Windows, но это мне не помогло, поскольку мне это нужно и для Android, и для iOS.

Зачем мне это нужно?
Потому что мне нравится конвертировать текст Skiashap, Linex и т. д. в реальные см и наоборот.

Спасибо за каждую помощь!

В MAUI нет прямого API для получения информации PPI/DPI. Вы можете подать запрос на добавление функции на GitHub.

Liqun Shen-MSFT 06.05.2024 10:01
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
236
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хотя прямого способа получить 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?

Спасибо за подробный ответ и ваш код, который мне очень помог. Я делаю это сейчас для конкретной платформы, и это работает.

macaroni 13.05.2024 14:09

Другие вопросы по теме