我正在为使用MFC构建的旧应用程序添加SVG导出支持并使用普通的旧GDI。由于SVG 1.1不支持文本换行,我不得不手动执行此操作。
该应用程序为我提供了一个CFont
实例(包含HFONT
)。我可以使用CFont::GetTextExtentPoint()
计算一段文字的宽度,但我还没有找到如何获得字体的行高。
如何获取字体的行高?
或CFont::GetTextExtentPoint()
总是返回Y坐标中的线高(而不是文本紧密边界框的实际高度)?
答案 0 :(得分:2)
我想我有一个可能的答案:
CDC desktopDC;
desktopDC.Attach(::GetDC(0));
desktopDC.SelecTObject(&font);
::TEXTMETRIC metrics;
desktopDC.GetTextMetrics(&metrics);
int lineHeight = metrics.tmHeight + metrics.tmExternalLeading;
这有点麻烦,所以如果有一个更短,更明显的解决方案(或者如果有人能确认CFont::GetTextExtentPoint()
向我提供了实际的线路高度),我会很高兴听到它仍然;)< / p>
答案 1 :(得分:0)
请参阅我在this question中给出的答案。关于文本宽度的问题,但你也可以得到文本高度。