use*_*997 3 c# gdi+ measurestring
我正在尝试完成可以在屏幕上布局文本的代码.以下C#代码放在Paint一个空的Windows窗体的事件处理程序中是一个例子:
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]);
}
Run Code Online (Sandbox Code Playgroud)
除了修剪s数组中每段文本之前和之后的空白外,它才能正常工作.它应该显示如下:
用于测试此布局算法的示例文本
但相反它看起来像这样:
示例textto testthis布局算法
我已确认该f.Trimming属性设置为None.我猜想这会给字符串的度量增加尾随和开放空白,但它仍会修剪它.关于如何制作MeasureString方法的任何想法都包括空白?否则,将完全处理字距调整.
GSe*_*erg 14
StringFormat f = new StringFormat(StringFormat.GenericTypographic)
{ FormatFlags = StringFormatFlags.MeasureTrailingSpaces };
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2328 次 |
| 最近记录: |