Хорошо, я закончил тем, что добавил собственный метод рисования со специальными объектами «Word». Объект Word содержит строку, цвет и указатель на шрифт. Я проанализировал текст в словаре объектов Word, затем перебрал все объекты и нарисовал текст с помощью следующего кода sudo
int maxWidth = Width
int curX = 0
int curY = 0
foreach word in words
if curX > 0
word = DrawWordUntilWidth(out curX, out curY, word, maxWidth)
if word != null
DrawWord(out curX, out curY, word, maxWidth)
DrawWordUntilWidth
будет измерять слова в word
(уменьшенные пробелами и "-") до curX > maxWidth
, а затем нарисует подходящие слова, обрезает строку в слове, устанавливает curX в 0, устанавливает curY += maxWordHeight
максимальная высота шрифтов, используемых в этом ряду. Если все слова в word
использованы, возвращается ноль, иначе возвращается усеченное слово.
DrawWord
очень похож, но работает в предположении, что curX всегда = 0, поэтому он может нарисовать всю строку, а затем установить curX и curY соответственно.
Он работает довольно хорошо, так как в нем немного учеников, и он довольно гладко рендерится. Если у кого-то есть лучшее решение, пожалуйста, дайте мне знать!