【问题标题】:Graphics.DrawString() & leading padding spaces for Proportional FontGraphics.DrawString() 和比例字体的前导填充空间
【发布时间】:2011-05-23 05:08:10
【问题描述】:

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

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

如果给定一个字符串比如

"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} 之类的格式化程序一起使用,但也没有帮助。

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

【问题讨论】:

    标签: c# drawstring


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多