Нарисуйте кривую Безье в C#

В этом примере показано, как использовать метод DrawBezier класса Graphics для рисования кривой Безье. Кривая Безье соединяет две конечные точки с гладкой кривой. Форма кривой определяется двумя контрольными точками. Контрольные точки влияют на форму кривой, но лежат на ней.

Когда вы нажимаете на PictureBox программы, следующий код сохраняет точку, которую вы нажали.

// Конечные точки - это точки 0 и 3.
// Внутренние контрольные точки - это точки 1 и 2.
private PointF[] Points = new PointF[4];

// Индекс следующей точки для определения.
private int NextPoint = 0;

// Выберите точку.
private void picCanvas_MouseClick(object sender, MouseEventArgs e)
{
    // Если мы начинаем новый набор из четырех точек,
    // получить первую точку.
    if (NextPoint > 3) NextPoint = 0;

    // Сохраним эту точку.
    Points[NextPoint].X = e.X;
    Points[NextPoint].Y = e.Y;

    // Переместимся к следующей точке.
    NextPoint++;

    // Перерисовать.
    picCanvas.Refresh();
}

Этот код определяет массив Points и переменную NextPoint, которая содержит индекс следующей точки в массиве. Обработчик событий PictureBox MouseClick хранит точку, которую вы нажали в Points [NextPoint] и увеличивает NextPoint. Затем он обновляет PictureBox, чтобы выполнить обработчик события Paint.

// Нарисуем выбранные точки.
// Если у нас есть четыре точки, нарисуйте кривую Безье.
private void picCanvas_Paint(object sender, PaintEventArgs e)
{
    e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
    e.Graphics.Clear(picCanvas.BackColor);
    if (NextPoint >= 4)
    {
        // Рисуем кривую.
            e.Graphics.DrawBezier(Pens.Red,
                Points[0], Points[1], Points[2], Points[3]);
    }

    // Нарисуем контрольные точки.
    for (int i = 0; i < NextPoint; i++)
    {
        e.Graphics.FillRectangle(Brushes.White,
            Points[i].X - 3, Points[i].Y - 3, 6, 6);
        e.Graphics.DrawRectangle(Pens.Black,
            Points[i].X - 3, Points[i].Y - 3, 6, 6);
    }
}

Кривая Безье требует двух конечных точек и двух контрольных точек, поэтому программа сначала проверяет, что вы выбрали 4 балла. Если у вас есть, он вызывает метод Graphics объекта DrawBezier для рисования кривой. Он передает метод пера, который он должен использовать, первую конечную точку, две контрольные точки и последнюю конечную точку.

Источник: http://csharphelper.com/blog/2014/12/draw-bezier-curve-c/

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