User 13854838 Ответов: 1

Как напечатать длинное имя в строке с автоматической настройкой текста в строке


я хочу Распечатать счет-фактуру,в которой конкретно, HSNCode и Unit, Batch, Exp и т. д. Эти элементы находятся в моем счете-фактуре, но когда конкретный размер текста похож на "Metaformin Hydrochloride Sustained" или больше, он перекрывается с HSNCode и Unit,
как настроить размер текста в "конкретном столбце"

Что я уже пробовал:

e.графика.DrawString("Particulars", new Font ("Arial", 15, FontStyle.Обычная), Кисти.Черный, новая точка(35, 300));

e.графика.DrawString("HSNCode", new Font("Arial", 15, FontStyle.Обычная), Кисти.Черный, новая точка(250, 300));

e.графика.DrawString("Unit", new Font("Arial", 15, FontStyle.Обычная), Кисти.Черный, новая точка(390, 300));

Richard MacCutchan

Сначала вам нужно измерить строку, чтобы увидеть, поместится ли она в отведенном ей пространстве. Затем вы можете настроить его шрифт или количество строк по мере необходимости.

1 Ответов

Рейтинг:
0

Thomas Barbare

Используйте MeasureString

Графика.MeasureString, méthode (система.Рисование)[^]

Экс:

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            int columnSize = 100;
            e.Graphics.DrawString("Particulars", new Font("Arial", 15, FontStyle.Regular), Brushes.Black, new Point(35, 300));
           Font font = fitText(e.Graphics, "Metaformin Hydrochloride Sustained", new Font("Arial", 15, FontStyle.Regular), columnSize);
            e.Graphics.DrawString("Metaformin Hydrochloride Sustained", font, Brushes.Black, new Point(35, 350));            
            e.Graphics.DrawString("HSNCode", new Font("Arial", 15, FontStyle.Regular), Brushes.Black, new Point(columnSize*2, 300));
            e.Graphics.DrawString("Unit", new Font("Arial", 15, FontStyle.Regular), Brushes.Black, new Point(columnSize*3, 300));
            e.Graphics.Dispose();
        }

        private Font fitText(Graphics e,string text,Font font,double maxWidth)
        {            
            while (e.MeasureString(text, font).Width > maxWidth)
               font = new Font(font.FontFamily, font.Size - 0.1F,font.Style);

            return font;
        }