Я в настоящее время динамично создаю битовый массив и использую графический объект от битового массива для рисования строки на нем как так:
System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(bmp);
graph.DrawString(text, font, brush, new System.Drawing.Point(0, 0));
Это возвращает прямоугольный битовый массив со строкой, записанной прямо напротив слева направо. Я хотел бы также смочь потянуть строку в форме радуги. Как я могу сделать это?
Я думаю, что единственный способ - визуализировать каждый символ отдельно и использовать
Graphics.RotateTransform
для поворота текста. Вам нужно будет самостоятельно определить угол поворота и смещение рендеринга. Вы можете использовать
Graphics.MeasureCharacterRanges
, чтобы получить размер каждого символа.
К сожалению, в GDI + нет способа прикрепить строки к пути (это то, что вам нужно).
Таким образом, единственный способ сделать это - сделать это «вручную». Это означает разбиение строки на символы и их размещение на основе ваших собственных расчетов пути.
Если вы не хотите вложить в это много работы, вам следует попытаться найти библиотеку (потенциально полную замену GDI +), чтобы сделать это, или откажитесь от своей радуги.
С помощью WPF вы можете отображать текст на пути ( см. Ссылку для практического руководства )