Мне было предложено создать графику заметок для некоторых элементов в базе данных, но с одним оговоркой - размер шрифта должен быть динамическим, чтобы текст заполнил всю графику.Заполнить графику с помощью текста с помощью RectangleF и DrawString
Первая итерация кода работает очень хорошо, но клиент хочет, чтобы шрифт был больше, чтобы графику было легче читать. Вот отрывок из той части, которая генерирует текст:
using (Graphics Graphic = Graphics.FromImage(Img))
{
// Add Some Padding
Width = Width - 20;
Height = Height - 20;
// Generate The Text
Font GraphicFont = new Font("Arial", 26, FontStyle.Bold);
RectangleF RectF = new RectangleF(10, 10, (float)Width, (float)Height);
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Near;
sf.LineAlignment = StringAlignment.Near;
Graphic.DrawString(Title, GraphicFont, Brushes.Black, RectF, sf);
}
Есть ли можно обнаружить текст переполнение в моем RectangleF
, или я могу определить размер моей DrawString
, прежде чем я применить его к графику, или есть какие-то Другая магия, которую я могу сделать, чтобы получить текст, чтобы заполнить графику?
Я бы хотел, чтобы текст для wordwrap и шрифта был одинакового размера для всех слов, поэтому вам не обязательно обязательно заполнять графику - надеюсь, что все это имеет смысл.
Вам нужно будет протестировать несколько предварительно выбранных размеров шрифта и выбрать тот, который соответствует прямоугольнику. Переход от, скажем, 8 пунктов к 24 пунктам с шагом 2. Не используйте бинарный поиск, он нестабилен. И используйте TextRenderer, когда вывод выводится на экран вместо принтера. –
Спасибо за консультацию; если бы я сделал это с вашим предложенным способом, как бы узнать, переполнен ли текст указанным прямоугольником? – edcs
Начните с прямоугольника с требуемой шириной и очень большой высотой. Он не подходит, когда прямоугольник, который вы получаете назад, имеет слишком большую высоту. –