Как да запазим качеството на текста, когато мащабирането на Windows е по-високо от 100%?

Опитах Delphi XE7, която е най-новата версия, която имам. Поставете някакъв обикновен ЕТИКЕТ върху него и го стартирайте.

Ако мащабирането на Windows е 125 или 150 %, целият текст изглежда гладък, както когато преоразмерявате растер, а не вектор.

Delphi използва извикване на API на DrawText на 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
Просто трябва да добавите подходящия манифест. Това е просто ресурс. Това е било покрито толкова много пъти тук. Няма нужда да повтаряме подробностите.   -  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