Как сохранить качество текста при масштабировании Windows выше 100%?

Я пробовал Delphi XE7, это последняя версия, которая у меня есть. Поместите на него простую этикетку и запустите ее.

Если масштабирование Windows составляет 125 или 150 %, весь текст выглядит гладким, как при изменении размера растра, а не вектора.

Delphi использует вызов DrawText API на Canvas. То же самое делают элементы управления Microsoft, но когда я создаю простую метку в каком-то инструменте MS, у меня не возникает этой проблемы.

Как сделать текст четким на 125 и 150%? Как заставить текст рисовать его как вектор, а не увеличенный растр?

Спасибо.


person Ivan Mark    schedule 07.10.2015    source источник
comment
«гладкий» — это, как правило, хорошо, но я подозреваю, что вы имеете в виду, что он выглядит плохо. Возможно, «пиксельный» — лучшее слово?   -  person Andreas Rejbrand    schedule 08.10.2015
comment
Как бы вы его ни называли, он выглядит измененным, а не чистым и резким. Даже когда я запускаю Delphi XE7, это выглядит уродливо. Я пробовал запускать разные приложения ниже 150%, и большинство из них выглядят нормально.   -  person Ivan Mark    schedule 08.10.2015
comment
Предположительно, это просто то, что ваше приложение подлежит виртуализации DPI. Почитайте на эту тему. Добавьте в свой манифест настройку, учитывающую системный DPI. Установите Scaled в True на всех ваших формах. Поставьте и используйте глифы большего размера для кнопок панели инструментов.   -  person David Heffernan    schedule 08.10.2015
comment
Дэвид, я видел ваш пост о манифесте DPI, но не знал, как добавить его в свое приложение Delphi 2007. Не могли бы вы помочь мне с этим? Могу ли я заставить приложение как-то не изменять размер при высоком DPI?   -  person Ivan Mark    schedule 08.10.2015
comment
Или вы можете использовать более крупный шрифт. Однажды я создал масштабируемую этикетку. У вас может быть исходный код для этого, но он основан на cxLabel от DevExpress, вам придется перенести его на стандартную метку самостоятельно.   -  person Jens Borrisholt    schedule 08.10.2015
comment
Вам просто нужно добавить соответствующий файл manifest. Это просто ресурс. Это было покрыто так в любое время здесь. Нам нет нужды повторять детали.   -  person David Heffernan    schedule 08.10.2015
comment
Это именно тот случай, когда нужно прикрепить скриншот. Если у вас недостаточно представителей, чтобы добавить его в свой вопрос, загрузите его на imgur и отредактируйте свой вопрос, добавив ссылку. Включите то, что вы получаете при 100% и 150%, и изображение того, что вы ожидаете.   -  person David    schedule 08.10.2015


Ответы (1)


Я вижу комментарии, но нет ответа. Это ответ:

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

Вот большая часть необходимой информации: http://news.helpandmanual.com/2014/11/a-delphi-developers-guide-for-4k-displays/

person Brandon Staggs    schedule 10.10.2015