Graphics.DrawString()&比例字体的前导填充空格

时间:2011-05-22 19:35:58

标签: c# drawstring

我一直在使用等宽字体将表格渲染到图形对象上,并使用空格字符对齐我正在填充文本的文本列。

我被要求将字体更改为比例字体,并不奇怪,但列不再排列。

如果给出一个字符串,如

"Bill-of-Material Edits\r\n------------------------------\r\n200   510024   Door 24\" x 58\"\r\n  3   530058   Panel 58\" x 58\"\r\n";

如何确保3条线在上面一行的200值的正确位置,并随后让510024直接位于530058上方?

这是我用来绘制字符串的代码:

 var fnt = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Regular, GraphicsUnit.Point);
        StringFormat strFormat = new StringFormat(StringFormat.GenericTypographic);
        strFormat.Alignment = StringAlignment.Near;

        string text = "Bill-of-Material Edits\r\n------------------------------\r\n200   510024   Door 24\" x 58\"\r\n  3   530058   Panel 58\" x 58\"\r\n";
        g.DrawString(text, fnt, Brushes.Black, new RectangleF(10f, 10f, 38.1062851f, 12.9231777f), strFormat);

我尝试用其他字符替换空格,例如unicode控制字符(0x0080)无效。我也尝试将string.Format()与{0,10}这样的格式化程序一起使用,但这些格式化程序也无济于事。

如何让我的专栏排好?

1 个答案:

答案 0 :(得分:2)

你不能让它像这样工作。在其列中绘制每个单独的字符串,传递列的Rectangle。每列的宽度取决于您。