Какой масштабный коэффициент использовать для отображения размера шрифта на мониторе с высоким разрешением? - PullRequest
1 голос
/ 13 июля 2009

У нас есть требование, когда наше приложение должно поддерживать мониторы с высоким разрешением. В настоящее время, когда приложение отображается в мониторе высокого разрешения, отображаемый текст слишком мал. Мы используем шрифт Arial 12 по умолчанию.

Теперь, чтобы сделать текст видимым, мне нужно пропорционально изменить размер шрифта. Мне трудно придумать формулу, которая дала бы мне целевой размер шрифта с учетом разрешения монитора.

Вот мое понимание проблемы.

1) В Windows по умолчанию 96 пикселей соответствуют 1 логическому дюйму. Это означает, что когда разрешение монитора увеличивается, размер экрана в логических дюймах также увеличивается.

2) Шрифт 1 Point составляет 1/72 от логического дюйма. Таким образом, в сочетании с тем фактом, что на логический дюйм приходится 96 пикселей, получается, что на точку шрифта приходится 96/72 пикселя.

Это означает, что для 12-точечного шрифта количество пикселей, которое он будет занимать, составляет 12 * 96/72 = 16 пикселей.

Теперь мне нужно знать коэффициент масштабирования, на который мне нужно увеличить количество пикселей, чтобы результирующий шрифт был правильно виден. Если я знаю масштабированное количество пикселей, я могу получить размер шрифта, просто разделив его на (96/72)

Каков рекомендуемый коэффициент масштабирования, который обеспечивал бы правильное масштабирование шрифтов на всех разрешениях монитора?

Также, пожалуйста, исправьте, если мое понимание неверно.

Ответы [ 2 ]

3 голосов
/ 13 июля 2009

На странице MSDN есть пример для LOGFONT структура . Ваше понимание верно, вам нужно масштабировать размер точки на vertres / 72.

lfHeight = -PointSize * GetDeviceCaps(hDC, LOGPIXELSY) / 72;
2 голосов
/ 13 июля 2009

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

Если вы хотите обработать это за пределами настроек Windows, просто умножьте размер шрифта на фактический DPI и разделите на 96.

Редактировать: Начиная с Windows Vista, Windows не будет сообщать о вашем фактическом настроенном DPI, если вы не напишите программу с поддержкой DPI. У Microsoft есть некоторые рекомендации по этому вопросу . Вы можете обнаружить, что масштабирование по умолчанию, которое Microsoft предоставляет для программ, не поддерживающих DPI, достаточно для ваших целей.

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