2

为什么当文本换行到固定宽度时,MeasureString 会为文本字符串返回不正确的高度?

var labelFont = new Font("Courier New", 11, FontStyle.Bold);
StringFormat format = StringFormat.GenericTypographic;
format.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;    
var size = g.MeasureString("This is a very very very very very very very very very long string", labelFont, 300, format);

size.Height给出不正确的值。我发现我需要取大约 1/3 返回的高度才能得到像真实高度一样的东西。

我正在尝试将文本字符串绘制到背景图像上;所以我需要知道包装文本的高度,以便知道下一个文本字符串的原点的 y 值。

此代码在 ASP.NET Web 应用程序中使用。

4

1 回答 1

3

您的MeasureString调用指定了300字符串的最大宽度。这意味着您的非常长的字符串被分成多行,这会导致字符串的计算高度更高。

请注意,字符串的最大宽度不是以字符为单位,而是以像素为单位。

于 2013-07-30T17:41:34.877 回答