2

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

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

如果给定一个字符串,例如

"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} 之类的格式化程序一起使用,但这也无济于事。

我该怎么做才能让我的列对齐?

4

1 回答 1

3

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

于 2011-05-22T21:08:10.320 回答