Копия викизеркало

Это зеркало вики с pascal.chat. Правка, история и вход — там.

High DPI/ru

Deutsch · English · Español · Русский

Вступление

DPI (Dots Per Inch) - это соотношение между размером в пикселях и фактическим размером дисплея. Здесь точка является эквивалентом пикселя в терминологии печати. Приложения могут либо использовать размеры в пикселях, либо учитывать фактический размер дисплея. Во втором случае размеры указаны в пунктах.

Большинство современных операционных систем используют значение DPI по умолчанию, установленное в 96, и позволяют вручную изменить его на более высокое значение. Физический DPI можно определить по отображению через протокол EDID по данным физического размера и фактического разрешения. Но физический DPI не используется системой автоматически, поэтому, если вы подключите видеовыход к монитору с другим размером, то разрешение экрана и визуальный размер элементов управления не изменятся автоматически.

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

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

Свойства Lazarus, ссылающиеся на DPI

Пиксели и точки

Например, 300 DPI означает, что на дюйм приходится 300 пикселей (или точек). Есть 72 точки на дюйм, так что:

300 пикселей ↔ 1 дюйм

300/72 пикселей ↔ 1 точка

4,16 пикселей ↔ 1 точка

Теперь с 96 DPI:

96 пикселей ↔ 1 дюйм

1,33 пикселя ↔ 1 точка

Теперь с 144 DPI:

144 пикселя ↔ 1 дюйм

2 пикселя ↔ 1 точка

Настройка High DPI

Windows

В Windows 95 и более поздних версиях можно изменить соотношение DPI, чтобы увеличить размер элементов. Высокий DPI означает любую пользовательскую настройку DPI с более чем 96 DPI (настройка по умолчанию) (ссылка).

Высокая осведомленность о DPI означает, что приложение учитывает этот параметр DPI.

Windows Vista и Windows 7

В Windows 7 перейдите в «Панель управления > Все элементы управления > Экран».

Выберите Мелкий 100% (по умолчанию), Средний 125% или Крупный 150%. Если вы выбираете 100% (96 DPI), это значение по умолчанию для Windows DPI (High DPI не используется по умолчанию).

Если вы выбрали 125% (120 DPI), опция «Использовать масштабирование DPI в стиле Windows XP» будет включена. Приложения, которые вы запускаете под этим параметром, масштабируются так, как будто они работают под Windows XP.

Если вы выберете 150% (144 DPI), опция «Использовать масштабирование DPI в стиле Windows XP» будет отключена (виртуализация DPI включена), и приложения, которые вы запускаете с этим параметром, должны иметь High DPI Awareness, чтобы предотвратить масштабирование системы, которое приведет к размытию изображения.

Вы также можете установить свои собственные настройки DPI с помощью параметра "Set custom text size (DPI)"(Установить собственный размер текста (DPI)) и включить/отключить виртуализацию DPI.

Windows 8 Metro приложения

Для Windows 8 Metro приложения читайте это.

Windows 10

В Windows 10 «Панель управления > Оформление и персонализация > Экран» имеет больше параметров. У вас могут быть разные размеры шрифта для каждого элемента: заголовок, меню, диалоговое окно и т.д. Убедитесь, что вы протестировали дважды для проверки, все ли работает под разными размерами.

Теперь [все] основана на размере шрифта, а не DPI. Параметр DPI [использовать] не рекомендуется, но все же [он] есть. Таким образом, вместо изменения размера всех элементов на рабочем столе, это изменит только размер шрифта (и, конечно, все остальное будет изменено для соответствия).

Помните, что под Windows 10 есть универсальные приложения (WinRT) и классические настольные приложения (Win32). Мы говорим здесь о настольных приложениях.

Linux

В Linux настройка DPI является более сложной и зависит от используемого программного обеспечения и его версии.

Вы можете узнать текущее разрешение монитора с помощью команды:

bash
xdpyinfo|grep dots

Вы можете изменить DPI на новое значение командой:

bash
xrandr --dpi 144x144

Чтобы сохранить настройки после перезагрузки, вам нужно добавить команду как скрипт в /etc/X11/Xsession.d/77set_dpi.

Дополнительная информация:

Примеры

Фиксированные размеры шрифта (не HighDPI)

Вот форма с неопределенным размером шрифта (установленным в ноль, который является значением по умолчанию). Он был разработан с разрешением 96 точек на дюйм (100%) и выглядит следующим образом:

Теперь при 120 DPI (125%) он становится:

Как видите, шрифт становится больше, поэтому текст обрезается. Заголовок окна становится больше, но клиентская область окна остается того же размера. Обратите внимание, что эти изменения в размере могут происходить при использовании приложения с другой темой Windows или с другой операционной системой.

Чтобы избежать этого, вы должны установить НЕнулевое значение размера шрифта. Обратите внимание, что Font.Size выражается в точках, а Font.Height выражается в пикселях. Фактически, сохраняется только значение Font.Height, а Font.Size изменяется в соответствии с текущим значением DPI. Поэтому, если мы установим размер шрифта, он будет зафиксирован до определенного размера в пикселях.

Если мы попробуем еще раз с фиксированным размером шрифта 9 точек, то при 96 DPI (100%) мы получим это:

Теперь, если та же самая программа работает с разрешением 120 точек на дюйм (125%), она становится:

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

Вывод из этого заключается в том, что можно избежать несогласованности в отображении, установив размеры шрифта. Но мы не принимаем во внимание, что графические элементы могут быть меньше в соответствии с фактическим DPI экрана. Благодаря поддержке DPI можно заставить приложение вести себя так, как будто оно знает реальный размер пикселей.

Приложения с поддержкой DPI (для Vista +)

CPickSniff это приложение для захвата цвета экрана. Мы будем использовать его в качестве примера, чтобы увидеть, как работает High DPI в Windows.

DPI по умолчанию

Это приложение запущено на 96 DPI (100%). Это режим по умолчанию, когда масштабирование не требуется.

Масштабирование DPI Windows

Это то же самое приложение, запущенное под 144 DPI (150%) без манифеста, поэтому Windows масштабирует его как растровое изображение. В результате получается размытое изображение.

С манифестом

Запущено под 144 DPI (150%). На этот раз приложение содержит манифест, но приложение не содержит кода для обработки масштабирования. Элементы не масштабируются, тогда как шрифты масштабируются (Windows делает это автоматически), поэтому текст обрезается.

High DPI

Наконец, с манифестом и масштабированием LCL, приложение находится в высоком разрешении(High DPI).

High DPI в Lazarus 1.8 и выше

Для обработки High DPI с использованием новых функций в 1.8, выполните следующие действия:

Lazarus IDE high DPI

Среда Lazarus IDE поддерживает DPI.

High DPI в старых версиях Lazarus

[Поддержка High DPI работает] не так хорошо, как в 1.8, но [она все-таки] работает, вызывайте при каждом событии OnCreate формы:

Self.AutoAdjustLayout(lapAutoAdjustForDPI, 96, Screen.PixelsPerInch, Self.Width, ScaleX(Self.Width, 96));

Внешние ссылки


From the Free Pascal wiki, page "High DPI/ru", as it stood on 2022-06-22 after a change by Zoltanleo, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Версия 2, последнее изменение: WikiArchive, .