Сплайн представляет собой гладкую незамкнутую кривую. Понятие сплайна пришло из инженерной графики, где под сплайном понимался гибкий прут, с помощью которого конструкторы вычерчивали кривые, изгибая его на плоскости вокруг торчащих из неё гвоздей. Сплайн должен пройти через фиксированный набор точек так, чтобы получающаяся линия была гладкой и не имела изломов. Форма линии зависит от гибкости прута. Если прут окажется недостаточно гибким, он может сломаться.
В современной компьютерной графике для вычерчивания сплайнов используются специальные формулы, в которых учитывается гибкость сплайна. Более гибкий сплайн имеет более крутые изгибы, а менее гибкий не так легко огибает ключевые точки.
Сплайн создаётся с помощью метода DrawCurve. При этом определяется перо, ключевые точки сплайна и его упругость. Если упругость сплайна равно 0, то это значит, что он абсолютно упругий, как резиновая лента. Сплайн с упругостью 0 представляет собой ломанную линию и фактически не является кривой. Чем выше упругость, тем более гладкой получается кривая. Значение упругости задавать не обязательно, по умолчанию она равна 1.
Гибкость сплайна имеет тип Single и может иметь дробное значение. Пример использования метода DrawCurve:
Visual Basic .Net:
Dim g As Graphics
g = Me.CreateGraphics
Dim redpen As Pen
redpen = New Pen(Color.Red, 3)
Dim points As Point() = {New Point(10, 10), New Point(10, 100), _
New Point(200, 50), New Point(250, 300)}
g.DrawCurve(redpen, points, 0.5)
Visual C#:
Graphics g;
g = this.CreateGraphics();
Pen redpen;
redpen = new Pen(Color.Red, 3);
Point[] points = { new Point(10, 10), new Point(10, 100), new Point(200, 50), new Point(250, 300) };
g.DrawCurve(redpen, points, 0.5f);
Можно строить сплайн не по всему массиву точек, а по его части. В этом случае задается сам массив, номер начальной точки и количество точек. Массив точек должен содержать не менее 4 элементов, иначе применение этого метода не имеет смысла, например:
Visual Basic .Net:
Dim p1(6) As Point
p1(0) = New Point(10, 10)
p1(1) = New Point(15, 25)
p1(2) = New Point(35, 50)
p1(3) = New Point(45, 80)
p1(4) = New Point(87, 90)
p1(5) = New Point(100, 100)
g.DrawCurve(redpen, p1, 1, 3, 2)
g.DrawCurve(Pens.Blue, p1, 1, 3, 3)
Visual C#:
Point[] p1=new Point[6];
p1[0] = new Point(10, 10);
p1[1] = new Point(15, 25);
p1[2] = new Point(35, 60);
p1[3] = new Point(45, 80);
p1[4] = new Point(87, 90);
p1[5] = new Point(100, 100);
g.DrawCurve(redpen, p1, 1, 3, 2);
g.DrawCurve(Pens.Blue, p1, 1, 3, 3);
Следует иметь в виду, что математический сплайн может иметь любую упругость, хотя при большом её значении форма сплайна получается довольно неожиданной. Физический сплайн при такой упругости может просто сломаться.