Я пытаюсь нарисовать разноцветную строку.Как правильно измерить символы в строке с помощью TextRenderer?
Как нет методов по умолчанию для этого, я пытаюсь нарисовать строковый символ с помощью char, используя TextRenderer.DrawText, однако он не сообщает правильную ширину первого символа, когда я пытаюсь измерить строку.
Чтобы нарисовать его char char, проведите по строке, измеряя ширину предыдущих символов, чтобы найти позицию следующего символа для рисования.
Чтобы получить ширину, я использую:
TextRenderer.MeasureText(word.Substring(0, i),
drawFont,
new Size(int.MaxValue, int.MaxValue),
(TextFormatFlags.Left | TextFormatFlags.NoPadding)).Width
Который работает нормально, но для первого символа, который формирует выходной сигнал, как:
L OREMIPSUM
В принципе, если есть только один персонаж - он измеряет он с отступом, несмотря на мои флаги.
можно использовать:
TextRenderer.MeasureText(String.Concat("*", chr.ToString(), "*"), font).Width - TextRenderer.MeasureText("**", font).Width
для измерения первого символа и получить правильное значение ширины, но он чувствует, как я делаю некоторые хак, когда должен быть лучший способ доступен.
Я также могу использовать строку в методе выше, чтобы избежать использования TextRenderer.MeasureText и по-прежнему получать правильные результаты без первой проблемы с символом.
Что было бы правильным способом измерения символов в моем случае?
Мне показалось, что я попытался дать ему графический экземпляр, но это не помогло, но я снова попытался, и это сработало. Я должен быть более осторожным, спасибо. – Murumuru