Практическое руководство. Рисование фундаментальных сплайнов
Фундаментальный сплайн — это кривая, которая проходит плавно через заданный набор точек. Чтобы нарисовать фундаментальный сплайн, создайте объект Graphics и передайте адрес массива точек в метод DrawCurve.
Рисование фундаментального сплайна в форме дуги-колокола
В следующем примере рисуется фундаментальный сплайн в форме дуги-колокола, проходящий через пять назначенных точек. На следующем рисунке показаны кривая и пять точек.
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);
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)
Рисование закрытого фундаментального сплайна
- Используйте метод DrawClosedCurve класса Graphics для рисования закрытого фундаментального сплайна. В закрытом фундаментальном сплайне кривая продолжается через последнюю точку массива и соединяется с первой точкой в массиве. В следующем примере рисуется фундаментальный сплайн, проходящий через шесть назначенных точек. На следующем рисунке показан закрытый сплайн вместе с шестью его точками:
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);
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)
Изменение изгиба фундаментального сплайна
- Изменить способ поворота фундаментального сплайна можно путем передачи аргумента напряжения в метод DrawCurve. В следующем примере рисуется три фундаментальных сплайна, проходящих через один и тот же набор точек. На следующем рисунке показаны три сплайна вместе с их значениями напряженности. Обратите внимание, что если напряжение равно 0, то точки будут соединены прямыми линиями.
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);
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)
Компиляция кода
Приведенные выше примеры предназначены для использования с Windows Forms и требуются PaintEventArgs e
, что является параметром обработчика Paint событий.
См. также
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
.NET Desktop feedback