gpt4 book ai didi

c# - GDI+ MeasureString() 不正确地修剪文本

转载 作者:行者123 更新时间:2023-11-30 13:20:05 26 4
gpt4 key购买 nike

我正在尝试完成一个可以在屏幕上布局文本的代码。以下 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]);
}

除修剪 s 数组中每段文本前后的空白外,它工作正常。它应该像这样显示:

Sample text to test this layout algorithm

但是它看起来像这样:

Sample textto testthis layoutalgorithm

我已确认 f.Trimming 属性设置为 None。我猜想这会在字符串的长度上添加尾随和开始的空格,但它仍然会修剪它。关于如何使 MeasureString 方法包含空格的任何想法?其他方面的字距调整处理得非常完美。

最佳答案

StringFormat f = new StringFormat(StringFormat.GenericTypographic)
{ FormatFlags = StringFormatFlags.MeasureTrailingSpaces };

关于c# - GDI+ MeasureString() 不正确地修剪文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11170823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com