Редактирование SVG на C#
Узнайте, как программно редактировать SVG с помощью C#.
Как редактировать SVG на C#
Библиотека Aspose.SVG for .NET предоставляет набор классов и методов для создания, редактирования, преобразования и других манипуляций с SVG-файлами. После создания объекта документа его можно заполнить элементами SVG. Вы можете настроить документ, добавив в него дополнительные элементы, такие как SVG-фигуры, тексты, фильтры и т. д. В этой статье мы рассмотрим два примера C#, которые демонстрируют различные подходы к созданию и редактированию SVG: один из них использует Aspose.SVG Builder API , а другой – ручные манипуляции с DOM с прямым заданием элементов и атрибутов.
Прежде всего, убедитесь, что в вашем проекте установлен Aspose.SVG for .NET API. Процесс установки довольно прост. Вы можете установить его через консоль менеджера пакетов NuGet, используя следующую команду:
Установка Aspose.SVG for .NET
Install-Package Aspose.SVG
Добавить элементы в SVG-файл с помощью Element Builders
Element Builders – это специализированные классы Aspose.SVG Builder API, которые упрощают создание и изменение элементов SVG в коде. Они часто используют шаблоны, такие как Fluent Builder Pattern, чтобы обеспечить чистый, читаемый синтаксис для установки атрибутов и структурирования содержимого SVG программным путем. Следующий код демонстрирует лаконичный и элегантный подход к созданию SVG с нуля с помощью C#. В примере используется паттерн Fluent Builder в SVGSVGElementBuilder для создания и добавления в SVG новых элементов: декорированного круга и текста.
Код C# для редактирования SVG с помощью Element Builders
using Aspose.Svg.Builder;
using System.Drawing;
using System.IO;
...
using (var document = new SVGDocument())
{
// Create an <svg> element with specified width, height and viewBox, and add into it other required elements
var svg = new SVGSVGElementBuilder()
.Width(700).Height(300)
.ViewBox(0, 0, 700, 300)
.AddG(g => g
.AddCircle(circle => circle.Cx(130).Cy(130).R(60).Fill(Paint.None).Stroke(Color.Salmon).StrokeWidth(70).StrokeDashArray(2,14))
.AddText("I can add elements to SVG!", x: 270, y: 140, fontSize: 30, fill: Color.DarkRed)
)
.Build(document.FirstChild as SVGSVGElement);
// Save the document
document.Save(Path.Combine(OutputDir, "svg-from-scratch.svg"));
}
Добавить элементы в файл SVG
API Document Object Model (DOM) обеспечивает полный контроль над узлами SVG и их атрибутами и полностью соответствует официальным спецификациям SVG. Вы можете изменять документ, добавляя новые узлы, удаляя существующие или редактируя их содержимое. Например, вот как можно добавить декорированный круг и текст:
Код C# для редактирования SVG с помощью низкоуровневых манипуляций с DOM
using System.IO;
using Aspose.Html;
...
// Set SVG Namespace Url
string SvgNamespace = "http://www.w3.org/2000/svg";
using (var document = new SVGDocument())
{
var svgElement = document.RootElement;
// Create a text element and set its attributes
var textElement = (SVGTextElement)document.CreateElementNS(SvgNamespace, "text");
textElement.Style.FontSize = "2.0em";
textElement.SetAttribute("x", "270px");
textElement.SetAttribute("fill", "darkred");
textElement.SetAttribute("y", "140px");
textElement.TextContent = "I can add elements to SVG!";
// Create a circle element and set its attributes
var circleElement = (SVGCircleElement)document.CreateElementNS(SvgNamespace, "circle");
circleElement.Cx.BaseVal.Value = 130;
circleElement.Cy.BaseVal.Value = 130;
circleElement.R.BaseVal.Value = 60;
circleElement.SetAttribute("stroke", "salmon");
circleElement.SetAttribute("stroke-width", "70");
circleElement.SetAttribute("fill", "none");
circleElement.SetAttribute("stroke-dasharray", "2,14");
// Add the text and circle elements into svgElement
svgElement.AppendChild(textElement);
svgElement.AppendChild(circleElement);
// Save the document
document.Save(Path.Combine(OutputDir, "svg-from-scratch.svg"));
}
Давайте рассмотрим простые шаги по редактированию документа SVG, которые иллюстрируют приведенный выше код С#. В созданный SVG-документ добавляются элементы SVG <circle> и <text>:
- Чтобы создать документ SVG программным способом с нуля, используйте конструктор SVGDocument() без параметров.
- Свойство
RootElementкласса SVGDocument указывает на корневой элемент документа<svg>. - Создайте элементы
<text>и<circle>с атрибутами и добавьте их к элементу<svg>:- Вы можете использовать метод CreateElementNS() для создания экземпляров классов SVGTextElement и SVGCircleElement.
- Вызовите метод SetAttribute() , чтобы установить атрибуты, определяющие положение, размер, заливку и т. д.
- Используйте метод
AppendChild()
для добавления элементов в
<svg>.
- Сохраните отредактированный SVG-файл с помощью метода Save() .
Результирующий файл, который мы создали выше, одинаков для обоих примеров кода (svg-from-scratch.svg) и выглядит следующим образом:

Полезные ресурсы
- В статье Редактирование файла SVG – примеры C# документации приведены основные сведения о том, как читать или редактировать объектную модель документа с помощью Aspose.SVG for .NET API. Вы узнаете, как создавать элементы SVG и как работать с ними – изменять документ, вставляя новые узлы, удаляя или редактируя содержимое существующих узлов.
- В главе SVG Builder – Расширенное создание и изменение SVG вы найдете руководство по эффективному манипулированию SVG с помощью Aspose.SVG Builder API, охватывающее аспекты от создания базовых элементов до продвинутых техник, таких как миксины и синтаксический сахар.
- Статья Element Builders посвящена конструкторам элементов, используемым в Aspose.SVG Builder API. Вы узнаете о классе SVGElementBuilder, его специализированных конструкторах и о том, как они упрощают программирование SVG.
Другие поддерживаемые функции
Используйте библиотеку Aspose.SVG C# для конвертирования, объединения, редактирования документов SVG, преобразования цветовых кодов, векторизации изображений и многого другого!