В этом разделе
Предоставляет механизм рисования, основанный на формате SVG.
Объектная модель
Синтаксис
Пример
Вот C#/VB.NET код, который демонстрирует, как создать механизм рисования SVG и использовать созданный механизм рисования для рисования графических объектов (рисунков и текста) на изображении SVG.
Imports System.Drawing
Imports System.Xml
Imports Vintasoft.Imaging
Imports Vintasoft.Imaging.Drawing
Imports Vintasoft.Imaging.Drawing.Svg
Class SvgDrawingEngineExample
''' <summary>
''' Creates SVG drawing engine on specified image and performs drawing.
''' </summary>
''' <param name="width">SVG image width.</param>
''' <param name="height">SVG image height.</param>
''' <param name="resultImagePath">A path to save the result SVG image.</param>
Public Shared Sub DrawWithSvgDrawingEngine(width As Integer, height As Integer, resultImagePath As String)
' create drawing engine
Using drawingEngine As New SvgDrawingEngine(width, height)
' create drawing area
Dim drawingArea As New RectangleF(0, 0, width, height)
' draw objects
DrawingExample(drawingEngine, drawingArea)
' create XML writer
Using xmlWriter__1 As XmlWriter = XmlWriter.Create(resultImagePath)
' get SVG content
Dim content As SvgContent = drawingEngine.GetContent()
' save SVG image
content.Save(xmlWriter__1)
End Using
End Using
End Sub
''' <summary>
''' Draws graphic objects using specified drawing engine.
''' </summary>
''' <param name="drawingEngine">Drawing engine.</param>
''' <param name="drawingArea">Image area to draw objects in.</param>
Public Shared Sub DrawingExample(drawingEngine As DrawingEngine, drawingArea As RectangleF)
' create bounding rectangle for ellipse
Dim ellipseRect As New RectangleF(drawingArea.X + drawingArea.Width * 0.3F, drawingArea.Y + drawingArea.Height * 0.3F, drawingArea.Width * 0.4F, drawingArea.Height * 0.4F)
' create brush and pen to draw ellipse
Using brush As IDrawingSolidBrush = drawingEngine.DrawingFactory.CreateSolidBrush(Color.Blue)
Using pen As IDrawingPen = drawingEngine.DrawingFactory.CreatePen(Color.Red, 4F)
' fill ellipse
drawingEngine.FillEllipse(brush, ellipseRect)
' stroke ellipse
drawingEngine.DrawEllipse(pen, ellipseRect)
End Using
End Using
' create brush and font to draw text
Using textBrush As IDrawingSolidBrush = drawingEngine.DrawingFactory.CreateSolidBrush(Color.Yellow)
Using font As IDrawingFont = drawingEngine.DrawingFactory.CreateFont("Arial", 30, True, False)
' create properties to layout text
Dim layoutProperties As New TextLayoutProperties(AnchorType.Center)
' draw text
drawingEngine.DrawText("Text", font, textBrush, ellipseRect, layoutProperties)
End Using
End Using
End Sub
End Class
using System.Drawing;
using System.Xml;
using Vintasoft.Imaging;
using Vintasoft.Imaging.Drawing;
using Vintasoft.Imaging.Drawing.Svg;
namespace CSHARP
{
class SvgDrawingEngineExample
{
/// <summary>
/// Creates SVG drawing engine on specified image and performs drawing.
/// </summary>
/// <param name="width">SVG image width.</param>
/// <param name="height">SVG image height.</param>
/// <param name="resultImagePath">A path to save the result SVG image.</param>
public static void DrawWithSvgDrawingEngine(int width, int height, string resultImagePath)
{
// create drawing engine
using (SvgDrawingEngine drawingEngine = new SvgDrawingEngine(width, height))
{
// create drawing area
RectangleF drawingArea = new RectangleF(0, 0, width, height);
// draw objects
DrawingExample(drawingEngine, drawingArea);
// create XML writer
using (XmlWriter xmlWriter = XmlWriter.Create(resultImagePath))
{
// get SVG content
SvgContent content = drawingEngine.GetContent();
// save SVG image
content.Save(xmlWriter);
}
}
}
/// <summary>
/// Draws graphic objects using specified drawing engine.
/// </summary>
/// <param name="drawingEngine">Drawing engine.</param>
/// <param name="drawingArea">Image area to draw objects in.</param>
public static void DrawingExample(DrawingEngine drawingEngine, RectangleF drawingArea)
{
// create bounding rectangle for ellipse
RectangleF ellipseRect = new RectangleF(
drawingArea.X + drawingArea.Width * 0.3f,
drawingArea.Y + drawingArea.Height * 0.3f,
drawingArea.Width * 0.4f,
drawingArea.Height * 0.4f);
// create brush and pen to draw ellipse
using (IDrawingSolidBrush brush = drawingEngine.DrawingFactory.CreateSolidBrush(Color.Blue))
{
using (IDrawingPen pen = drawingEngine.DrawingFactory.CreatePen(Color.Red, 4f))
{
// fill ellipse
drawingEngine.FillEllipse(brush, ellipseRect);
// stroke ellipse
drawingEngine.DrawEllipse(pen, ellipseRect);
}
}
// create brush and font to draw text
using (IDrawingSolidBrush textBrush = drawingEngine.DrawingFactory.CreateSolidBrush(Color.Yellow))
{
using (IDrawingFont font = drawingEngine.DrawingFactory.CreateFont("Arial", 30, true, false))
{
// create properties to layout text
TextLayoutProperties layoutProperties = new TextLayoutProperties(AnchorType.Center);
// draw text
drawingEngine.DrawText("Text", font, textBrush, ellipseRect, layoutProperties);
}
}
}
}
}
Иерархия наследования
System.Object
 Vintasoft.Imaging.Drawing.DrawingEngine
   Vintasoft.Imaging.Drawing.Svg.SvgDrawingEngine
Требования
Целевые платформы: .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5
Смотрите также