Я использую .NET для рисования строки в ограниченном пространстве. Я хочу, чтобы строка была как можно больше. У меня нет проблем в том, что строка разбивается на несколько строк (если она остается внутри прямоугольника). Теперь проблема: я не хочу, чтобы .NET разбивала строку на разные строки в середине слова. Например, строка «Тест» печатает на одной строке в большом шрифте. Строка «Тестирование» должна печатать на одной строке меньшим шрифтом (а не «Testi» в одной строке и «ng» на другой), а строка «Test Test» должна печатать на двух строках довольно крупным шрифтом.Отключить разрыв слова при обертке строк в .NET DrawString
У кого-нибудь появились идеи о том, как ограничить .NET, чтобы не сломать мои слова?
Я в настоящее время использую такой код:
internal static void PaintString(string s, int x, int y, int height, int maxwidth, Graphics g, bool underline)
{
FontStyle fs = FontStyle.Bold;
if (underline)
fs |= FontStyle.Underline;
Font fnt = new System.Drawing.Font("Arial", 18, fs);
SizeF size = g.MeasureString(s, fnt, maxwidth);
while (size.Height > height)
{
fnt = new System.Drawing.Font("Arial", fnt.Size - 1, fs);
size = g.MeasureString(s, fnt, maxwidth);
}
y = (int)(y + height/2 - size.Height/2);
g.DrawString(s, fnt, new SolidBrush(Color.Black), new Rectangle(x, y, maxwidth, height));
}
Но у меня есть фиксированное пространство, которое я не хочу, чтобы изменить размер. Я хочу масштабировать/обертывать текст так, чтобы он соответствовал – JanHudecek