Измерьте обернутую строку

Я пытаюсь создать Control, который в основном позволяет мне рисовать разные строки друг под другом. Однако ширина строк не может быть больше ширины элемента управления. Чтобы решить эту проблему, я думал передать объект 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, который измерял бы ширину каждого символа и так далее. Есть ли более простые способы сделать это?

5
задан haiyyu 2 February 2012 в 21:52
поделиться