如何获得GDI HFONT的线高?

时间:2009-12-22 12:25:37

标签: mfc svg gdi css

我正在为使用MFC构建的旧应用程序添加SVG导出支持并使用普通的旧GDI。由于SVG 1.1不支持文本换行,我不得不手动执行此操作。

该应用程序为我提供了一个CFont实例(包含HFONT)。我可以使用CFont::GetTextExtentPoint()计算一段文字的宽度,但我还没有找到如何获得字体的行高。

如何获取字体的行高? 或CFont::GetTextExtentPoint()总是返回Y坐标中的线高(而不是文本紧密边界框的实际高度)?

2 个答案:

答案 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中给出的答案。关于文本宽度的问题,但你也可以得到文本高度。