Нарисуйте текст на кривой в C#
Пример показывает, как рисовать текст, следующий за сегментом линии. В этом примере этот код используется для рисования текста на кривой. Метод DrawTextOnPath, показанный в следующем коде, использует метод DrawTextOnSegment предыдущего примера для рисования текста, следующего за GraphicsPath.
// Нарисуем текст по графическому элементу.
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, чтобы нарисовать столько символов, сколько будет помещено в текущий сегмент линии.
