从Font获取“ascent”LineHeight

时间:2011-06-23 22:16:55

标签: c# wpf

如何在给定FontSize的情况下获取Font的LineHeight?它似乎根据字体不同而不一定连接到FontSize。我正在使用BlockLineHeight进行LineStackingStrategy。

澄清。我知道有确定总行高的方法。在这种情况下,我正在寻找从基线到字体顶部的高度(因此减去p的尾部等)。

enter image description here

如上图所示。我想要上升。

2 个答案:

答案 0 :(得分:1)

如果您使用Graphics对象进行绘制并参考,则可以执行此操作。

Font myFont = new Font("Verdana", 15);
SizeF fontSize = e.Graphics.MeasureString("my text", myFont);

然后会告诉您字符串的高度和宽度。您可以将其用于单行测试线高度。

或者通过这个答案:How to calculate font height in WPF? 您可以使用一些简单的计算轻松计算线高。

答案 1 :(得分:1)

FontFamily fontFamily = new FontFamily("Arial");
Font font = new Font(fontFamily, 16, FontStyle.Regular, GraphicsUnit.Pixel);
ascent = fontFamily.GetCellAscent(FontStyle.Regular);
ascentPixel = font.Size * ascent / fontFamily.GetEmHeight(FontStyle.Regular);

自: http://msdn.microsoft.com/en-us/library/xwf9s90b.aspx