Я пишу функцию, которая применяет специальное форматирование к заданным ключевым словам при печати строки. Например, в строке - «Почему это не будет работать?» Мне может потребоваться напечатать слово «Почему» подчеркнуто и синим.Как правильно разместить несколько фрагментов строк в пределах одного ограничивающего прямоугольника при притяжении с помощью C#?
Мне пришлось реализовать это на куски, распечатывая каждый сегмент строки с помощью отдельного вызова для печати. Этот подход работает с одной проблемой - я не могу правильно установить интервал при печати строк. Мои ключевые слова печатаются поверх предыдущего текста по умолчанию и накладываются поочередно текстом, напечатанным впоследствии.
Я использую ограничивающие прямоугольники для размещения строк на печатной странице.
RectangleF rectKeywordBounds = new RectangleF(60.0, 60.0, 550.0, 1200.0);
После того, как я напечатал сегмент строки, я могу изменить размер прямоугольника по количеству символов нарисованных и напечатать следующий сегмент строки.
EArgs.Graphics.DrawString(strFragment, fontBlueItalics, Brushes.Blue, rectKeywordBounds);
iLastPrintIndex = strFragment.Length + iLastPrintIndex;
Я использовал этот метод, чтобы изменить положение печати нового сегмента строки:
rectKeywordBounds = new Rectangle(rectKeywordBounds .X + iLastPrintIndex, rectKeywordBounds .Y, rectKeywordBounds .Width, rectKeywordBounds .Height);
И я использовал это:
properSpacing = new SizeF(-((float)iLastPrintIndex), 0.0f);
rectKeywordBounds .Inflate(properSpacing);
Оба метода приводят к такое же перекрытие сегментов. Следующий код продвигает ограничивающий прямоугольник в ожидаемом мне виде, поэтому почему концепция не работает при печати текста внутри прямоугольника?
Rectangle rectKeywordBounds = new Rectangle(90, 90, 800, 100);
for (int x = 0; x < 6; x++)
{
EventArgs.Graphics.DrawRectangle(Pens.BlueViolet, rectKeywordBounds);
rectKeywordBounds = new Rectangle(rectKeywordBounds .X + 15, rectKeywordBounds .Y + 200, rectKeywordBounds .Width, rectKeywordBounds .Height);
}
Спасибо, itowlson. Вот и все! – GFalcon