C# GDI+;MeasureString()未正确修剪文本

C# GDI+;MeasureString()未正确修剪文本,c#,gdi+,measurestring,C#,Gdi+,Measurestring,我试图完成一个代码,可以在屏幕上布局文本。以下C#代码放置在本来为空的Windows窗体的Paint事件处理程序中就是一个示例: string[] s = new string[] { "Sample text ", "to test", " this layout ", "algorithm" }; PointF[] pts = new PointF[s.Length]; PointF start = new PointF(10, 10); StringFormat f = new Strin

我试图完成一个代码,可以在屏幕上布局文本。以下C#代码放置在本来为空的Windows窗体的
Paint
事件处理程序中就是一个示例:

string[] s = new string[] { "Sample text ", "to test", " this layout ", "algorithm" };
PointF[] pts = new PointF[s.Length];
PointF start = new PointF(10, 10);
StringFormat f = new StringFormat(StringFormat.GenericTypographic);
float x = start.X;
float y = start.Y;
for (int i = 0; i < pts.Length; i++)
{
    pts[i] = new PointF(x, y);
    SizeF sz = e.Graphics.MeasureString(s[i], Font, pts[i], f);
    x += sz.Width;
    e.Graphics.DrawString(s[i], Font, Brushes.Black, pts[i]);
}
string[]s=新字符串[]{“示例文本”、“要测试”、“此布局”、“算法”};
PointF[]pts=新的PointF[s.Length];
点F开始=新点F(10,10);
StringFormat f=新的StringFormat(StringFormat.GenericTypographic);
float x=start.x;
float y=start.y;
对于(int i=0;i
它工作正常,除了在
s
数组中的每段文本前后修剪空白。它应该显示如下:

用于测试此布局算法的示例文本

但事实上,它看起来是这样的:

用于测试此布局算法的示例文本


我已确认
f.triming
属性设置为
None
。我猜想这会在字符串的度量中添加尾随空格和开头空格,但它仍然会对其进行修剪。关于如何使
MeasureString
方法包含空格,您有什么想法吗?否则的紧排操作将得到完美处理。

完美!这正是我需要的。谢谢
StringFormat f = new StringFormat(StringFormat.GenericTypographic)
                     { FormatFlags = StringFormatFlags.MeasureTrailingSpaces };