+-

我使用固定大小的字体(例如:“Courier New”).当我通过调用CFont :: CreateFont函数初始化CFont对象时,我想只指定字体高度.
CFont Font;
Font.CreateFont( nFontHeight, 0, 0, 0, 0, false, false,
0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
FIXED_PITCH|FF_MODERN, _T("Courier New") );
根据文档,字体宽度将自动计算.我需要为其他一些计算自动计算值.
GetLogFont函数没用,因为看起来CFont只保存我们给出的值width = 0并且它仅在第一次使用时计算该值. (请检查Microsoft documentation)
另一个选择是使用单个字符使用CDC :: GetTextExtent.但在这种情况下,我甚至可以看到一些微小的差异,即使在高度.例如,当我将-32作为高度时,GetTextExtent为y值返回33.
有没有办法得到正确的计算宽度?
最佳答案
你试过CDC :: GetTextMetrics()吗?我从来没有使用它,但它似乎是你正在寻找的.你可以得到平均和最大字符宽度,我想Courier New应该是相同的.
点击查看更多相关文章
转载注明原文:c – 如何从CFont对象获取自动计算的字体宽度? - 乐贴网