Изменение 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. Для этого необходимо связать ресурс манифеста с вашим исполняемым файлом. Подсказки и ресурсы:
Пример кода для Delphi:
Приведенный выше код является лишь шаблоном, который необходимо дополнить для создания и интеграции манифеста, определяющего осознанность приложения к высокому DPI. Для получения более детальных инструкций рекомендуется обратиться к документации Delphi и MSDN. Проблема заключается в изменении значения PixelsPerInch в зависимости от выбранной темы оформления в Windows 7, что может привести к некорректному отображению приложений, не адаптированных под высокое разрешение. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Справочник по API-функциям ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |