Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Изменение PixelsPerInch при смене тем оформления в Windows 7 и его влияние на масштабирование

Delphi , Синтаксис , Справочник по API-функциям

Изменение PixelsPerInch при смене тем оформления в Windows 7

Вопрос, заданный в данном запросе, касается изменения значения PixelsPerInch в зависимости от выбранной темы оформления в операционной системе Windows 7. Это значение влияет на масштабирование элементов интерфейса и может вызывать неожиданное поведение приложений, разработанных с использованием технологий Delphi и Pascal.

Проблема с PixelsPerInch в Windows 7

В среде Windows 7, при переключении между стандартной темой Windows 7 и классической темой, значение PixelsPerInch может варьироваться. Это может стать причиной некорректного отображения приложений, которые не настроены на работу в высоком разрешении (DPI-aware applications). Особенно это заметно при использовании масштабирования экрана в 150%: в стандартной теме Windows 7 значение PixelsPerInch возвращает 96, что отличается от фактического разрешения экрана.

Пример таблицы для дальнейшего разъяснения:

Пример таблицы

Подтвержденный ответ

Проблема, описанная выше, связана с тем, что приложение не было заявлено как высокое DPI-осознающее (DPI-aware). В результате этого оно подвергается виртуализации DPI. Это означает, что при использовании масштабирования экрана в 150%, значение PixelsPerInch остается равным 96, когда включена стандартная тема Windows 7. Это связано с тем, что виртуализация DPI зависит от Windows Desktop Manager (DWM), и DWM не активен, когда используется классическая тема оформления.

Альтернативный ответ

Не получаете значение PixelsPerInch в 96 при использовании классической темы по той причине, что виртуализация DPI не работает без DWM, который отсутствует в классическом режиме.

Как решить проблему:

Для того чтобы приложение корректно отображалось в высоком разрешении, вам необходимо добавить в ваш исполняемый файл манифест (manifest), который укажет операционной системе, что приложение является DPI-aware. Это можно сделать проще и удобнее в Delphi XE7, чем в Delphi 2010. Для этого необходимо связать ресурс манифеста с вашим исполняемым файлом.

Подсказки и ресурсы:

  • Для начала ознакомьтесь с темами MSDN, начиная с этого документа.
  • Особое внимание уделите понятию манифеста и его содержимому, которое может сообщить Windows о желаемом уровне осознанности DPI.
  • Полезно также ознакомиться со связанным вопросом на Stack Overflow: Troubleshooting DPI Virtualization and DPI-Aware Applications in Windows Vista.

Пример кода для Delphi:

program HighDPIApp;
{$APPTYPE CONSOLE}
uses
  System.SysUtils,
  Vcl.Menus; // Для использования TApplication.Initialize
{$R *.res} // Ссылка на файл манифеста

// Код для инициализации DPI-осознанности в приложении
initialization
  TApplication.Initialize(hInstance);
  // Здесь должен быть код для добавления манифеста, если это необходимо
  // Пример добавления манифеста в ресурсы проекта отсутствует в этом примере
  // Необходимо обратиться к документации Delphi и MSDN для получения подробных инструкций
end.

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

Создано по материалам из источника по ссылке.

Проблема заключается в изменении значения PixelsPerInch в зависимости от выбранной темы оформления в Windows 7, что может привести к некорректному отображению приложений, не адаптированных под высокое разрешение.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Справочник по API-функциям ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 14:47:11/0.0034341812133789/0