Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Для выполнения любой задачи необходимо создать или загрузить документ. Aspose.SVG для .NET API позволяет создавать документы SVG с нуля, а также загружать существующий SVG из разных источников. API предоставляет класс SVGDocument, который имеет несколько конструкторов, позволяющих создавать новые экземпляры классов. SVGDocument является корнем иерархии SVG DOM, содержит весь контент и полностью основан на спецификациях W3C SVG 2.0 и WHATWG DOM.
Файлы SVG можно создавать и загружать:
В этой статье представлены некоторые примеры создания и загрузки файлов SVG с использованием Aspose.SVG для .NET API. SVGDocument имеет широкий набор перегруженных конструкторов, позволяющих создать пустой документ или загрузить его из файла, URL-адреса, потока и т. д.
Aspose.SVG для .NET API предоставляет класс SVGDocument, который можно использовать для создания пустого документа с использованием его конструктора по умолчанию. После создания объекта документа его можно будет позже заполнить элементами SVG. В следующем фрагменте кода C# показано использование конструктора по умолчанию SVGDocument() для создания документа SVG.
1using Aspose.Svg;
2...
3
4 // Initialize an empty SVG document
5 using (var document = new SVGDocument())
6 {
7 // Work with the SVG document here...
8 }Если вы хотите сохранить созданный пустой документ SVG в файл, используйте следующий фрагмент кода C#:
1using Aspose.Svg;
2using System.IO; 1// Create an empty SVG document using C#
2
3// Prepare an output path to save a document
4string documentPath = Path.Combine(OutputDir, "empty.svg");
5
6// Initialize an empty SVG document
7using (SVGDocument document = new SVGDocument())
8{
9 // Work with the SVG document here...
10
11 // Save the document to a file
12 document.Save(documentPath);
13}Более подробную информацию о сохранении файла SVG можно найти в статье Сохранить документ SVG. В статье Редактировать файл SVG вы узнаете, как редактировать SVG с помощью библиотеки Aspose.SVG for .NET, а также найдете подробные примеры добавления новых элементов к документам SVG и применять фильтры SVG к растровым изображениям.
Вы можете создать SVG из строкового содержимого, используя конструктор
SVGDocument(string, string). Если вам нужно создать документ из пользовательской строки непосредственно в коде и вам не нужно сохранять его в файл, вам может помочь следующий пример: мы создаем SVG-документ, содержащий круг с радиусом 40 пикселей.
1using Aspose.Svg;
2...
3
4 // Prepare SVG code
5 var documentContent = "<svg xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"50\" cy=\"50\" r=\"40\" /></svg>";
6
7 // Initialize an SVG document from a string content
8 using (var document = new SVGDocument(documentContent, "."))
9 {
10 // Work with the document here...
11 }Чтобы создать SVG из потока, используйте один из конструкторов SVGDocument():
1using Aspose.Svg;
2using System.IO;
3...
4
5 //Prepare a path to a file required for a FileStream object creating
6 string documentPath = Path.Combine(DataDir, "bezier-curves.svg");
7
8 // Create a FileStream object
9 using (var stream = new FileStream(documentPath, FileMode.Open, FileAccess.Read))
10 {
11 // Initialize an SVG document from the stream
12 using (var document = new SVGDocument(stream, "."))
13 {
14 // Work with the document
15 }
16 }API SVG Builder предлагает мощный и гибкий способ программного создания документов SVG. Используя класс SVGSVGElementBuilder, разработчики могут легко создавать сложную графику SVG с возможностью детальной настройки. Дополнительную информацию об использовании API SVG Builder вы найдете в статье документации
SVG Builder API – Расширенное создание и редактирование SVG.
Вот пример, демонстрирующий, как создать собственный документ SVG с различными графическими элементами:
1using System.IO;
2using Aspose.Svg;
3using Aspose.Svg.Builder;
4using System.Drawing; 1// Create SVG using Builder API
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 other required elements
7 SVGSVGElement svg = new SVGSVGElementBuilder()
8 .Width(100).Height(100)
9 .ViewBox(-21, -21, 42, 42)
10 .AddDefs(def => def
11 .AddRadialGradient(id: "b", cx: .2, cy: .2, r: .5, fx: .2, fy: .2, extend: ev => ev
12 .AddStop(offset: 0, stopColor: Color.FromArgb(0xff, 0xff, 0xFF), stopOpacity: .7)
13 .AddStop(offset: 1, stopColor: Color.FromArgb(0xff, 0xff, 0xFF), stopOpacity: 0)
14 )
15 .AddRadialGradient(id: "a", cx: .5, cy: .5, r: .5, extend: ev => ev
16 .AddStop(offset: 0, stopColor: Color.FromArgb(0xff, 0xff, 0x00))
17 .AddStop(offset: .75, stopColor: Color.FromArgb(0xff, 0xff, 0x00))
18 .AddStop(offset: .95, stopColor: Color.FromArgb(0xee, 0xee, 0x00))
19 .AddStop(offset: 1, stopColor: Color.FromArgb(0xe8, 0xe8, 0x00))
20 )
21 )
22 .AddCircle(r: 20, fill: "url(#a)", stroke: Color.FromArgb(0, 0, 0), extend: c => c.StrokeWidth(.15))
23 .AddCircle(r: 20, fill: "b")
24 .AddG(g => g.Id("c")
25 .AddEllipse(cx: -6, cy: -7, rx: 2.5, ry: 4)
26 .AddPath(fill: Paint.None, stroke: Color.FromArgb(0, 0, 0), d: "M10.6 2.7a4 4 0 0 0 4 3", extend: e => e.StrokeWidth(.5).StrokeLineCap(StrokeLineCap.Round))
27 )
28 .AddUse(href: "#c", extend: e => e.Transform(t => t.Scale(-1, 1)))
29 .AddPath(d: "M-12 5a13.5 13.5 0 0 0 24 0 13 13 0 0 1-24 0", fill: Paint.None, stroke: Color.FromArgb(0, 0, 0), extend: e => e.StrokeWidth(.75))
30 .Build(document.FirstChild as SVGSVGElement);
31
32 // Save the SVG document
33 document.Save(Path.Combine(OutputDir, "face.svg"));
34}Этот фрагмент кода создает документ SVG со сложным дизайном, демонстрируя гибкость и мощь SVG Builder API для программного создания пользовательской графики SVG. Сгенерированное SVG изображение представляет лицо c улыбкой (смайлик):
Чтобы загрузить SVG из файла bezier-curves.svg, используйте конструктор по умолчанию класса SVGDocument и передайте ему путь к файлу в качестве входного параметра.
1using Aspose.Svg;
2using System.IO;
3...
4
5 // Prepare a path to a file loading
6 string documentPath = Path.Combine(DataDir, "bezier-curves.svg");
7
8 // Load an SVG document from the file
9 using (var document = new SVGDocument(documentPath))
10 {
11 // Work with the document
12 }Следующие примеры могут помочь вам создать документ на основе URL-адреса, ссылающегося на XML-файл:
1using Aspose.Svg;
2...
3
4 // Load SVG from the Web at its URL
5 var documentUrl = new Url("https://docs.aspose.com/svg/files/owl.svg");
6 using (var document = new SVGDocument(documentUrl))
7 {
8 // Work with the SVG document here...
9 }1using Aspose.Svg;
2...
3
4 // Load SVG from the Web at its URL
5 using (var document = new SVGDocument(new Url("https://docs.aspose.com/svg/files/basic-shapes.svg")))
6 {
7 // Work with the SVG document here...
8 }Если вы зададите неправильный URL-адрес, к которому в данный момент невозможно получить доступ, библиотека выдаст исключение DOMException со специальным кодом «NetworkError», чтобы сообщить вам, что выбранный ресурс не может быть найден.
Если SVG содержит внешние ресурсы, полная загрузка всех ресурсов может занять некоторое время и, следовательно, привести к блокировке основного потока приложения. В асинхронной модели на события Load и ReadyStateChange можно подписаться, чтобы уведомить приложение загрузки о полной загрузке файла SVG, как показано в следующем примере кода. Метод
Navigate(Url) класса
SVGDocument используется для загрузки документа по указанному URL в текущий экземпляр.
1using Aspose.Svg;
2using System.Threading; 1// Load SVG asynchronously using C#
2
3Url documentUrl = new Url("https://docs.aspose.com/svg/files/owl.svg");
4ManualResetEvent documentEvent = new ManualResetEvent(false);
5
6SVGDocument document = new SVGDocument();
7
8// Subscribe to the event 'OnReadyStateChange' that will be fired once the document is completely loaded
9document.OnReadyStateChange += (sender, ev) =>
10{
11 if (document.ReadyState == "complete")
12 {
13 // Sets the state of the event to signaled to unblock the main thread
14 documentEvent.Set();
15 }
16};
17
18// Load an SVG document Async
19document.Navigate(documentUrl);
20
21// Blocks the current thread while the document is loading
22documentEvent.WaitOne();
23
24// Work with the documentВы можете загрузить полные примеры и файлы данных с GitHub. О загрузке примеров с GitHub и запуске примеров вы узнаете из раздела Как запускать примеры.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.