Как заставить масштабирование с высоким разрешением?

Как заставить приложение масштабироваться с высоким разрешением?

Как заставить Windows применять масштабирование dpi к приложению?


Изменить: что такое масштабирование с высоким разрешением?

Не все пользователи запускают Windows со скоростью 96 точек на дюйм. Не каждая кнопка должна быть 75×23 пикселей, а не каждая панель инструментов высотой 25 пикселей, а не каждый глифский рисунок 16×16. Если пользователь выбрал другой параметр dpi для Windows, вам необходимо масштабировать все соответствующим образом.

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

Начиная с Windows Vista и используя мощность Desktop Composition, Microsoft отказалась от разработчиков, выполняющих свою работу, и теперь они относятся к приложению. Они сообщают приложениям, что пользователь работает с разрешением 96 точек на дюйм. Затем Windows использует видеокарту и Desktop Composition для расширения форм.

Pro: содержимое формы будет хорошим читаемым размером.
Con: все будет немного нечетким.

Эта функция масштабирования с высоким разрешением dpi работает только по усмотрению пользователя и требует:

  • Windows Vista или новее
  • Состав рабочего стола будет включен
  • Пользователю отключить «Использовать масштабирование стиля Windows XP»
  • Пользователь не отключает масштабирование для вашего приложения

В качестве разработчика вы можете отказаться от масштабирования с высоким разрешением; Если вы приложили усилия для правильного написания вашего приложения, и вы знаете, что правильно обрабатываете данные с высоким разрешением. Вы отказываетесь от этого масштабирования, добавляя запись манифеста в свой исполняемый файл, заявляя, что вы «с высоким разрешением на dpi ».

Тема о том, как сделать ваше приложение уважением к предпочтениям пользователя (включая шрифт, размер шрифта и настройки dpi), является вопросом stack overflow . Как и синтаксис манифеста, объявляющий ваше « обладание высокой точкой доступа».

Этот вопрос, касающийся суперпользователя , заключается в том, как игнорировать разработчика, который пошел вперед и добавил запись манифеста с высоким разрешением на дюйм, когда на самом деле приложение не осведомлено о высокой тоне. Они сказали Windows отключить масштабирование, но они фактически не протестировали приложение. Там есть программное обеспечение с записью манифеста с высоким разрешением dpi, и теперь приложение непригодно для использования под «большими шрифтами» (например, 120dpi).

Хм. Мое предложение состояло в том, чтобы отредактировать манифест и удалить неправильное объявление. И не забудьте об этом разработчик, но вы можете!

Изменить: Обратите внимание, что должно быть возможно просто разместить манифест рядом с исполняемым файлом, например, для foo.exe , вы поместите манифест в foo.exe.manifest . См. Статью MSDN (см. Раздел «Синтаксис имен файлов»).

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

DPIMangler: запись в блоге , исходный код .

Вы все равно можете редактировать манифест, вам просто нужно отредактировать его в самом файле .EXE. Найдите редактор ресурсов, который имеет явную поддержку. Пример с рудиментарной поддержкой – редактор ресурсов XN.) Просто найдите и удалите строку, которая упоминает HIGHDPIAWARE и сохранит исполняемый файл.

Не забудьте сделать копию исполняемого файла, прежде чем редактировать его!

Интересно, является ли ResizeEnable то, что вы ищете?

http://www.digitallis.co.uk/pc/ResizeEnable/

  • Как изменить размер системного шрифта в OS X?
  • Разрыв шрифта Windows 10 125%
  • Высокий DPI испортил текст и значки; Не произошло до форматирования
  • C # WinForms отключает масштабирование DPI
  • Создание приложения с поддержкой DPI
  • Как установить DPI приложений Java Swing в Windows / Linux?
  • Как написать код WinForms, который автоматически масштабируется до системных настроек шрифта и dpi?
  • Давайте будем гением компьютера.