Как раскрасить отдельные символы и поддерживать правильное расстояние / кернинг / выравнивание?
Я хочу использовать Graphics.DrawString для рисования символов с использованием отдельных цветов.
Проблема заключается в том, что каждый раз, когда я вызываю DrawString, я должен знать, где его расположить (используя точку или прямоугольник) относительно других символов.
Это почти возможно, если принять во внимание кернинг и перенос, которые происходят при использовании DrawString в прямоугольнике со StringFormat. StringFormat важен для указания выравнивания, обтекания, обрезки и т. Д.
В идеале яя смогу рассказать DrawString, как раскрасить каждого персонажа в отдельности. Другой вариант, если я могу измерить строку в прямоугольнике, используя StringFormat, а затем извлечь позиции X и Y каждого индекса символа, чтобы я мог нарисовать каждую из них с помощью своей собственной кисти.
Я пытался измерить каждый символ по отдельности, но это не сработает, потому что комбинация символов в строке отличается от ширины каждого символа, измеряемого отдельно.
РЕДАКТИРОВАТЬВот что происходит, когда я беру строку, получаю массив Region, заполняю эти области чередующимся красным и синим цветом, а затем пытаюсь нарисовать каждый отдельный символ в этих регионах:
Я вызываю DrawString следующим образом:
g.DrawString(character, font, brush, region.GetBounds(g));
Также попробовал следующее:
Rectangle bounds = Region.GetBounds(g);
g.DrawString(character, font, brush, new PointF(bounds.Left, bounds.Top));
А также,
g.DrawString(character, font, brush, region.GetBounds(g), stringFormat);
Те же результаты.