如何获取 GDI HFONT 的行高?

发布于 2024-08-15 20:48:57 字数 297 浏览 2 评论 0原文

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

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

如何获取字体的行高? 或者 CFont::GetTextExtentPoint() 是否始终返回 Y 坐标中的行高(而不是文本紧密配合边框的实际高度)?

I'm adding SVG export support to an old application built with MFC and using plain old GDI. As SVG 1.1 doesn't support text wrapping, I am forced to do this manually.

The application provides me with a CFont instance (which contains an HFONT). I can calculate the width of a piece of text using CFont::GetTextExtentPoint(), but I haven't found out how to obtain the line height of a font yet.

How can I obtain the line height of my font?
Or does CFont::GetTextExtentPoint() always return the line height in the Y coordinate (instead the actual height of the text's tight-fitting bounding box)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

秋日私语 2024-08-22 20:48:58

我想我有一个可能的答案:

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

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

int lineHeight = metrics.tmHeight + metrics.tmExternalLeading;

这有点麻烦,所以如果有一个更短、更明显的解决方案(或者如果有人可以确认 CFont::GetTextExtentPoint() 为我提供了实际的行高) ,我还是很高兴听到它;)

I think I have a possible answer:

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

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

int lineHeight = metrics.tmHeight + metrics.tmExternalLeading;

It's a bit cumbersome, so if there's a shorter, more obvious solution (or if anyone can confirm that CFont::GetTextExtentPoint() provides me with the actual line height), I'd be happy to hear it still ;)

莳間冲淡了誓言ζ 2024-08-22 20:48:58

请参阅我在此问题中给出的答案。问题是关于文本宽度,但您也可以获得文本高度。

See the answer I gave in this question. The question's about the text width, but you can get the text height as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文