Я пытаюсь создать элемент управления, который в принципе позволяет мне рисовать разные строки под друг другом. Однако ширина строк не может быть больше, чем у элементов управления. Чтобы решить эту проблему, я думал о передаче объекта RectangleF методу Graphics.DrawString. Это будет обертывать строки, которые шире ширины пройденного прямоугольника. Хотя это и решает проблему неспособности видеть всю строку, если она слишком велика, есть еще одна проблема. Если бы я попробовать что-то вроде этогоИзмерение завернутой строки
Graphics g = e.Graphics; // Paint event
g.DrawString(someText, someFont, someBrush, new PointF(0, 0), someRectangleF);
g.DrawString(someMoreText, someFont, someBrush, new PointF(0, 12), someRectangleF);
проблема была в том, что если SOMETEXT получает завернуты, то третья строка будет рисовать текст поверх первого текста, что делает его трудно/невозможно читать.
Я искал решение этой проблемы, и нашел некоторые интересные ссылки, которые, однако, включали использование цикла for, который бы измерял ширину каждого символа и так далее. Есть ли более простые способы сделать это?
Вы считаете, что используете TextBlock с упаковкой? Элемент управления, который вы пытаетесь создать, похоже на ListView. Почему пользовательский контроль? – Paparazzi
Я действительно рассматривал использование ListView. Однако мой контроль представляет собой график, который моя программа сможет распечатать. И напечатанные ListViews действительно не выглядят хорошо, поэтому я пытался создать свой собственный контроль. О, и простите, я забыл упомянуть, что я использую WinForms. Я отредактировал свой вопрос. – haiyyu