Нарисуйте текст на кривой в C#
Пример
// Нарисуем текст по графическому элементу. private void DrawTextOnPath(Graphics gr, Brush brush, Font font, string txt, GraphicsPath path, bool text_above_path) { // Создаем копию, чтобы мы не испортили оригинал. path = (GraphicsPath)path.Clone(); // Сгладить путь в сегменты. path.Flatten(); // Рисуем символы. int start_ch = 0; PointF start_point = path.PathPoints[0]; for (int i = 1; i < path.PointCount; i++) { PointF end_point = path.PathPoints[i]; DrawTextOnSegment(gr, brush, font, txt, ref start_ch, ref start_point, end_point, text_above_path); if (start_ch >= txt.Length) break; } }
Сначала код создает копию GraphicsPath, поэтому он может изменять его, не испортив оригинал. Затем он выравнивает путь, чтобы превратить его в ряд сегментов линии. (Обратите внимание, что a GraphicsPath может содержать более одной отключенной «фигуры». Этот пример не учитывает этого и предполагает, что все результирующие сегменты связаны.)
Затем код перебирает точки пути и вызывает метод DrawTextOnSegment, чтобы нарисовать столько символов, сколько будет помещено в текущий сегмент линии.