Поделиться через


Практическое руководство. Рисование фундаментальных сплайнов

Обновлен: Ноябрь 2007

Фундаментальный сплайн представляет собой гладкую кривую, проходящую через заданные точки. Чтобы нарисовать фундаментальный сплайн, создайте объект Graphics и передайте адрес массива точек методу DrawCurve.

Рисование фундаментального сплайна в форме колокола

  • В следующем примере рисуется фундаментальный сплайн в форме колокола, проходящий через пять заданных точек. Кривая и пять указанных точек представлены на приведенном ниже рисунке.

    Фундаментальный сплайн

Dim points As Point() = { _
   New Point(0, 100), _
   New Point(50, 80), _
   New Point(100, 20), _
   New Point(150, 80), _
   New Point(200, 100)}

Dim pen As New Pen(Color.FromArgb(255, 0, 0, 255))
e.Graphics.DrawCurve(pen, points)

Point[] points = {
   new Point(0, 100),
   new Point(50, 80),
   new Point(100, 20),
   new Point(150, 80),
   new Point(200, 100)};

Pen pen = new Pen(Color.FromArgb(255, 0, 0, 255));
e.Graphics.DrawCurve(pen, points);

Рисование замкнутого фундаментального сплайна

  • Чтобы нарисовать замкнутый фундаментальный сплайн, можно использовать метод DrawClosedCurve класса Graphics. В замкнутом фундаментальном сплайне линия продолжается за последнюю точку и соединяет ее с первой точкой массива. В следующем примере рисуется замкнутый фундаментальный сплайн, проходящий через шесть заданных точек. На следующем рисунке представлены замкнутый сплайн и шесть заданных точек.

Фундаментальный сплайн

Dim points As Point() = { _
   New Point(60, 60), _
   New Point(150, 80), _
   New Point(200, 40), _
   New Point(180, 120), _
   New Point(120, 100), _
   New Point(80, 160)}

Dim pen As New Pen(Color.FromArgb(255, 0, 0, 255))
e.Graphics.DrawClosedCurve(pen, points)

Point[] points = {
   new Point(60, 60),
   new Point(150, 80),
   new Point(200, 40),
   new Point(180, 120),
   new Point(120, 100),
   new Point(80, 160)};

Pen pen = new Pen(Color.FromArgb(255, 0, 0, 255));
e.Graphics.DrawClosedCurve(pen, points);

Изменение изгиба фундаментального сплайна

  • Чтобы изменить изгиб фундаментального сплайна, необходимо передать методу DrawCurve нужное значение параметра натяжения. В следующем примере показано, как можно нарисовать три фундаментальных сплайна, которые проходят через один и тот же набор точек. На следующем рисунке представлены три сплайна вместе с соответствующими значениями параметра натяжения. Обратите внимание, что в случае, когда параметр натяжения равен 0, точки соединяются прямыми линиями.

Фундаментальный сплайн

Dim points As Point() = { _
   New Point(20, 50), _
   New Point(100, 10), _
   New Point(200, 100), _
   New Point(300, 50), _
   New Point(400, 80)}

Dim pen As New Pen(Color.FromArgb(255, 0, 0, 255))
e.Graphics.DrawCurve(pen, points, 0.0F)
e.Graphics.DrawCurve(pen, points, 0.6F)
e.Graphics.DrawCurve(pen, points, 1.0F)

Point[] points = {
   new Point(20, 50),
   new Point(100, 10),
   new Point(200, 100),
   new Point(300, 50),
   new Point(400, 80)};

Pen pen = new Pen(Color.FromArgb(255, 0, 0, 255));
e.Graphics.DrawCurve(pen, points, 0.0f);
e.Graphics.DrawCurve(pen, points, 0.6f);
e.Graphics.DrawCurve(pen, points, 1.0f);

Компиляция кода

Предыдущий пример предназначен для работы с Windows Forms, для него необходим объект PaintEventArgs e, передаваемый в качестве параметра обработчику события Paint.

См. также

Другие ресурсы

Прямые и кривые линии и фигуры

Построение и рисование кривых