Определить размер шрифта Windows (100%, 125% и 150%) - PullRequest
40 голосов
/ 21 февраля 2012

Я создал приложение, которое отлично работает, пока пользователь не выберет 125% или 150%. Это сломало бы мое заявление. Позже я нашел способ найти размер шрифта, обнаружив DPI.

Это прекрасно работало, пока люди с китайскими версиями Windows 7 не начали использовать мое приложение. Все приложение ломается на китайской Windows 7. Из того, что я могу сказать (я не могу проверить это, потому что у меня есть только английская версия, и установка языковых пакетов не вызывает проблемы) Китайские иероглифы вызывают странный DPI, который ломает мой применение.

Мой текущий код работает так:

if (dpi.DpiX == 120) // For 125% fonts
{
    // Resize form and set default font to correct problems
}
else if (dpi.DpiX == 96) // For 100 and 150% fonts
{
    // Resize form and set default font to correct problems
}

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

Так что же является хорошим способом определения масштаба шрифта Windows (100%, 125% и 150%) без определения DPI? Мне нужно что-то твердое, что будет работать на всех операционных системах и языках Windows 7.

Ответы [ 3 ]

18 голосов
/ 21 февраля 2012

Правильный способ обработки переменных настроек DPI - это не обнаруживать их и не настраивать размеры элементов управления вручную в операторе switch (для начала, возможностей гораздо больше, чем в примере if) .

Вместо этого вы должны установить для свойства AutoScaleMode вашей формы значение AutoScaleMode.Dpi и позволить инфраструктуре позаботиться об этом за вас.

Добавьте следующий код в конструктор вашей формы (или установите это свойство во время разработки):

this.AutoScaleMode = AutoScaleMode.Dpi;

Хотя вы можете использовать AutoScaleMode.Font. Дополнительные сведения об автоматическом масштабировании см. В документации MSDN .

.
5 голосов
/ 18 октября 2013

Для пользователей C ++ / Win32 вот хороший справочник: Написание приложений Win32 с высоким разрешением .

0 голосов
/ 31 мая 2019

Если вы используете более новую версию Windows, я рекомендую переустановить драйверы видеокарты (например, установить более новую версию). У меня была та же проблема, мой масштаб отображения был установлен на 100%, но шрифт был далеко.надеюсь, что это решит вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...