Graphics.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);

Я пытался заменить пробелы другими символами, такими как управляющие символы Юникода (0x0080), но безрезультатно. Я также пытался использовать string.Format() с форматировщиками, такими как {0,10}, что тоже не помогло.

Что мне сделать, чтобы мои столбцы выровнялись?


person Jon Dewees    schedule 22.05.2011    source источник


Ответы (1)


Вы не можете заставить это работать так. Нарисуйте каждую отдельную строку в своем столбце, передайте прямоугольник столбца. Насколько широким вы сделаете каждую колонку, зависит от вас.

person Hans Passant    schedule 22.05.2011