Как я могу получить высоту строки GDI HFONT? - PullRequest
0 голосов
/ 22 декабря 2009

Я добавляю поддержку экспорта SVG в старое приложение, созданное с помощью MFC и использующее старый GDI. Поскольку SVG 1.1 не поддерживает перенос текста, я вынужден сделать это вручную.

Приложение предоставляет мне экземпляр CFont (который содержит HFONT). Я могу вычислить ширину фрагмента текста, используя CFont::GetTextExtentPoint(), но я еще не выяснил, как получить высоту строки шрифта.

Как я могу получить высоту строки моего шрифта? Или CFont::GetTextExtentPoint() всегда возвращает высоту строки в координате Y (вместо фактической высоты ограничивающего прямоугольника текста)?

Ответы [ 2 ]

2 голосов
/ 22 декабря 2009

Я думаю, что у меня есть возможный ответ:

CDC desktopDC;
desktopDC.Attach(::GetDC(0));
desktopDC.SelecTObject(&font);

::TEXTMETRIC metrics;
desktopDC.GetTextMetrics(&metrics);

int lineHeight = metrics.tmHeight + metrics.tmExternalLeading;

Это немного громоздко, поэтому, если есть более короткое, более очевидное решение (или если кто-то может подтвердить, что CFont::GetTextExtentPoint() предоставляет мне фактическую высоту строки), я был бы рад услышать это до сих пор;

0 голосов
/ 22 декабря 2009

См. Ответ, который я дал на этот вопрос . Вопрос о ширине текста, но вы также можете получить высоту текста.

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