Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.SVG Builder API предлагает класс
SVGPathElementBuilder, который является конструктором элементов для создания элементов SVG <path>, которые используются для определения пути в документе SVG. Этот класс предоставляет методы для установки различных атрибутов, специфичных для элемента <path>, и для построения его содержимого. Кроме того, SVG Builder API представляет синтаксический сахар для дальнейшего совершенствования процесса создания и манипулирования SVG. Сюда входят вложенные построители для различных элементов SVG, обеспечивающие более интуитивно понятный и эффективный способ определения сложных структур SVG.
Эта статья посвящена классу PathBuilder, который предназначен для упрощения создания путей SVG и управления ими. В статье показано, как PathBuilder предлагает интуитивно понятный синтаксис для программного определения путей SVG, что позволяет разработчикам упростить процесс создания сложных фигур и кривых.
SVG пути (paths) имеют основополагающее значение для создания широкого спектра фигур: от простых прямоугольников до сложных многоугольников, кривых и контуров. Пути SVG состоят из серии команд, определяющих форму фигуры. К таким командам относятся команды – moveto (M), lineto (L), closepath (Z), кривые Безье, эллиптическая дуга и другие. Path Builder обеспечивает упрощенный подход к определению путей SVG, уменьшая сложность их создания и манипулирования.
Шаблон «строитель внутри строителя» предполагает использование нескольких классов строителя, где один конструктор вложен в другой, чтобы облегчить создание сложных объектов или структур. В этом шаблоне внешний конструктор создает объект или контейнер более высокого уровня, а внутренний конструктор отвечает за создание компонента или подобъекта внутри этого контейнера.
В следующем фрагменте кода PathBuilder представляет собой пример построителя внутри построителя, иллюстрирующий вложенный шаблон построителя. Здесь
SVGSVGElementBuilder служит внешним строителем, ответственным за создание элемента <svg>. В SVGSVGElementBuilder экземпляр PathBuilder используется для создания элемента <path>, который является элементом внутри корневого элемента <svg>.
Класс PathBuilder предлагает расширенный способ создания элементов пути. Он позволяет определять сложные пути, используя свободный синтаксис:
1using Aspose.Svg.Builder;
2using System.Drawing;
3using System.IO; 1// Create an SVG path element with line commands programmatically in C# using SVG Path Builder
2
3// Initialize an SVG document
4using (SVGDocument document = new SVGDocument())
5{
6 // Create an <svg> element with specified width, height and viewBox, and add a <path> element to it
7 SVGSVGElement svg = new SVGSVGElementBuilder()
8 .Width(200).Height(200)
9 .ViewBox(0, 0, 150, 150)
10
11 .AddPath(p => p
12 // 'D' method defines the 'd' attribute, which contains the path data
13 .D(d => d
14 // 'M' sets the starting point of the path (Move to x=50, y=50)
15 .M(50, 50)
16 // 'L' draws a line from the current point to the new point (Line to x=100, y=50)
17 .L(100, 50)
18 // Another 'L' to draw a line to a new point (Line to x=100, y=100)
19 .L(100, 100)
20 // 'Z' closes the path by drawing a line to the starting point
21 .Z())
22 // Sets the fill color of the path to teal
23 .Fill(Color.Teal))
24 .Build(document.FirstChild as SVGSVGElement);
25
26 // Save the SVG document
27 document.Save(Path.Combine(OutputDir, "path.svg"));
28}В этом примере метод
AddPath() конструктора SVG используется для определения элемента <path>. Лямбда-выражение, передаваемое в метод
D() класса
SVGPathElementBuilder, определяет форму пути с помощью команд пути SVG, таких как
M() (перейти к),
L() (линия до) и
Z() (закрыть путь).
Пути также могут быть определены непосредственно как строки, что позволяет интегрировать данные пути SVG в процесс построения. Метод AddPathSegment() класса PathBuilder облегчает добавление пользовательских сегментов пути к данным пути, обеспечивая гибкость в определении пути.
1.D(d => d.AddPathSegment("M199 89.3 C206.6 66.6 235.8 13.2 270 30.3 286.6 38.6 298.9 59.4 310 73.3 ..."))Свободный синтаксис PathBuilder позволяет легко определять сложные пути с помощью интуитивно понятных команд. Логика построения пути инкапсулируется в конструкторе, что повышает читаемость и удобство обслуживания кода.
SVG может размещать текст вдоль линии, определенной элементом <path>. Это делается с помощью элемента <textPath> с атрибутом href. Текст, отображаемый вдоль кривой, в основном принимает атрибут href со ссылкой на элемент <path>. Ниже приведен пример того, как SVG textPath может быть реализован с использованием Aspose.SVG Builder API:
1using Aspose.Svg.Builder;
2using System.Drawing;
3using System.IO; 1// Create SVG text path in C# using SVG Builder
2
3// Initialize an SVG document
4using (SVGDocument document = new SVGDocument())
5{
6 // Create an <svg> element with specified width, height, and viewBox, and add into it <path> elements
7 SVGSVGElement svg = new SVGSVGElementBuilder()
8 .Width(1200).Height(300)
9 .ViewBox(0, 0, 1200, 300)
10
11 .AddPath(p => p.Id("Path1")
12 .Fill(f => f.None()).Stroke(Color.IndianRed).Transform(t => t.Translate(-100, 40))
13 .D(d => d.AddPathSegment("M 199 89 C 206 66 235 25 270 30 286 38 298 59 310 73 321 87 338 99 356 103 387 111 396 90 410 85"))
14 )
15
16 .AddPath(p => p.Id("Path2")
17 .Fill(f => f.None()).Stroke(Paint.None).Transform(t => t.Translate(400, -100))
18 .D(d => d.M(80, 210).Q(95, 110, 200, 200).T(400, 200)))
19
20
21 .AddText(t => t.FontSize(30).Fill(Color.Teal)
22 .AddTextPath(tp => tp
23 .Href("#Path1")
24 .AddContent("SVG textPath element")
25 )
26 .AddTextPath(tp => tp
27 .Href("#Path2")
28 .AddContent("SVG can place text along a path")
29 )
30 )
31
32 .Build(document.FirstChild as SVGSVGElement);
33
34 // Save the SVG document
35 document.Save(Path.Combine(OutputDir, "text-path.svg"));
36}В этом примере мы создаем два пути с разными атрибутами id. Пути создаются с использованием разных подходов: первый путь использует метод AddPathSegment(), а второй путь использует методы M(), Q() и T(). Также первый путь цветной, а второй прозрачный. Элемент SVG <textPath> ссылается на атрибут id элемента <path> в документе SVG, который позволяет отображать текст по этому предопределенному пути:

В этом примере мы также используем подход builders within builders. Внешний построитель SVGSVGElementBuilder отвечает за создание элемента <svg>, а вложенные построители используются для добавления элементов <path> и элементов <text> с элементами <textPath> внутри них. Шаблон «строители внутри строителей» упрощает создание сложных документов SVG, разбивая процесс на иерархические уровни построителей. Этот шаблон способствует инкапсуляции, читабельности и гибкости, упрощая разработчикам эффективное создание документов SVG и манипулирование ими.
Смотрите также
stroke или fill для различных фигур и элементов SVG при заполнении их краской, узором или градиентом.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.