System.Drawing.Graphics修剪字符串的结尾?

时间:2014-11-20 14:44:49

标签: c# system.drawing measurestring system.drawing.graphics

在处理文本渲染算法时,我偶然发现了Graphics.MeasureString()方法的奇怪行为。

它似乎在内部修剪了一个字符串的结尾。

g.MeasureString("d", font).Width //is 13.289278
g.MeasureString("d ", font).Width //is 13.2892771
g.MeasureString(" d", font).Width //is 17.4858913
//font.Size = 11; font.FontFamily = "Arial";

有人可以解释这种行为吗?

1 个答案:

答案 0 :(得分:2)

MeasureTrailingSpaces格式标志的MSDN描述开始:

  

默认情况下,MeasureString方法返回的边界矩形   排除每行末尾的空格。将此标志设置为包含   测量空间。

所以如果你提供这个标志 - 结果将是相同的

var fmt = new StringFormat(StringFormatFlags.MeasureTrailingSpaces);
var x2 = g.MeasureString("d ", font, 0, fmt).Width;
var x3 = g.MeasureString(" d", font, 0, fmt).Width;