3
我想完成一个代码,可以在屏幕上布局文本。放置在否则为空Windows窗体的Paint
事件处理程序下面的C#代码是一个例子:GDI + MeasureString()不正确地修剪文本
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]);
}
它正常工作,除了前和s
阵列中的每个文本片段后修整空格。它应该像这样显示:
示例文本来测试这个布局算法
但相反,它似乎是这样的:
样品文本到testthis layoutalgorithm
我有确认f.Trimming
属性设置为None
。我会猜想这会给字符串的测量增加尾随和开放的空白,但它仍然会修剪它。有关如何使MeasureString
方法包含空白的任何想法?除此之外,完全可以处理。
完美!这正是我需要的。谢谢。 – user1476997