использование графики для измерения размера шрифта в окне пользователя - PullRequest
1 голос
/ 22 мая 2011

Недавно поставив вопрос о получении настроек шрифта пользователя, таких как 96 или 120 dpi, несколько SO-гуру сказали мне использовать dpiX и dpiY из любого графического объекта.

Но dpi относится к размеру экрана (X / Y) или размеру шрифта (доступен только X)?

Другими словами, могу ли я быть уверен, что dpiX = dpiY во всех случаях?

В противном случае новый шрифт будет выглядеть растянутым, не так ли?

Например, что если dpiX = 96 и dpiY = 60 ???

1 Ответ

0 голосов
/ 22 мая 2011

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

Например, если вы хотите нормально ориентированный текст, вы вычисляете высоту пикселя в терминах вертикального DPI:

lf.lfHeight = -::MulDiv(point_size, ::GetSysMetrics(hdc, LOGPIXELSY), 72);

Если ваш текст повернут на 90 градусов, вы бы использовали LOGPIXELSX вместо LOGPIXELSY.

При этом я никогда не видел экран Windows, для которого не было бы DPIодинаково в обоих направлениях.Я видел их различия на некоторых принтерах, и драйверы справляются с этим непоследовательно, что привело к этому неотвеченному вопросу .

...