如何测量屏幕上绘制的文本行之间的空间?

时间:2013-02-01 18:31:09

标签: winapi fonts draw measure

我们有一个最终用户应用程序,允许您将多行文本写入文本框,它会将此信息保存到文本文件中。在下一个会话中,从文件中检索信息以显示文本。问题有时在下一个会话中,文本框的边界正在切割文本,因此用户必须手动调整文本框的大小。我想以编程方式确定文本框是否需要调整大小。

GetTextExtentPoint32()似乎可以很好地根据选择到设备上下文中的当前字体来测量线的实际绘制宽度。但是现在我正在解决在垂直方向上调整文本框边界大小的问题。 GetTextExtentPoint32()确实给了我高度,这似乎是正确的,但我得到的总高度有点太小。我相信我需要测量每一行之间的空间,但我不太确定?

更新:看起来我正在寻找TEXTMETRIC.tmExternalLeading和TEXTMETRIC.tmInternalLeading。有趣的是,对于某些字体和大小,计算是现场的,我可以完美地适合我的文本。但对于某些字体和大小,计算有点太小,在这种情况下看起来领先是太小还是0?

1 个答案:

答案 0 :(得分:0)

只要我记得你可以使用GetTextMetrics函数而且(Metrics.tmAscent + Metrics.tmDescent)应该是你正在寻找的值