Нарисуйте текст на кривой в C#

Пример Нарисуйте текст в сегменте линии в 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, чтобы нарисовать столько символов, сколько будет помещено в текущий сегмент линии.

Источник: http://csharphelper.com/blog/2016/01/draw-text-on-a-curve-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector