В чем разница между логическим DpiX и физическим DpiX в Qt?

В документации QPaintDevice (из которого получаются все объекты, доступные для рисования, такие как QWidget, QPixmapи т. д.), есть две функции для получения DPI устройства

int logicalDpiX() const;
int physicalDpiX() const;

int logicalDpiY() const;
int logicalDpiX() const;

В документации сказано

Функции logicDpiX () и logicDpiY () возвращают горизонтальное и вертикальное разрешение устройства в точках на дюйм. Функции PhysicalDpiX () и financialDpiY () также возвращают разрешение устройства в точках на дюйм, но учтите, что если логическое и физическое разрешение различаются, соответствующий QPaintEngine должен обрабатывать отображение. Наконец, функция colorCount () возвращает количество различных цветов, доступных для устройства рисования.

Несмотря на это описание, я до сих пор не понимаю, в чем цель разницы. Может кто-нибудь, пожалуйста, пролить свет на это?

5

Решение

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

Я нашел это конкретную информацию Windows: http://msdn.microsoft.com/en-us/library/windows/apps/ff684173

Поскольку фактические размеры пикселей различаются, текст, читаемый на одном мониторе
может быть слишком маленьким на другом мониторе. Кроме того, люди имеют разные
предпочтения — некоторые люди предпочитают больший текст. По этой причине Windows
позволяет пользователю изменять настройку DPI. Например, если пользователь
устанавливает для дисплея значение 144 DPI, 72-точечный шрифт имеет высоту 144 пикселя.
Стандартные настройки DPI: 100% (96 DPI), 125% (120 DPI) и 150% (144
DPI). Пользователь также может применить пользовательские настройки. Начиная с Windows 7,
DPI — это настройка для каждого пользователя.

Даже лучше:
QT документы:

Примечание о логических и физических точках на дюйм: физический DPI основан на
фактические физические размеры в пикселях, когда они доступны, и это полезно для
предварительный просмотр и другие случаи, когда желательно знать точное
физические размеры содержимого экрана. Логические точки на
дюймы используются для преобразования шрифта и элементов пользовательского интерфейса из точки
размеры в пикселях, и могут отличаться от физических точек
на дюйм Логические точки на дюйм иногда устанавливаются пользователем в
панель настроек рабочего стола, позволяющая пользователю глобально контролировать
Интерфейс и размеры шрифтов в разных приложениях.

8

Другие решения

Я не уверен на 100%, но я думаю
физическое разрешение — это фактическое разрешение холста, на котором вы рисуете.
Логическое разрешение — это разрешение, которое вы используете в своей программе. Например, для обработки разных экранов вы можете сказать, что для любого физического разрешения дисплея (холста) я буду работать с логическим разрешением 100 на 100 пикселей и использовать, например, фиксированный макет. Масштабирование будет выполняться художником автоматически с использованием физического разрешения.

OpenGL работает таким образом, например. Сначала он преобразует все координаты (используя модель, вид, матрицы проекций) в куб диапазона [-1, 1], выполняет вычисления в этих координатах, а затем отображает их в фактический буфер цвета

0

По вопросам рекламы [email protected]