В этом разделе
Предоставляет механизм рисования, основанный на поверхности рисования PDF.
Объектная модель
Синтаксис
Пример
Вот C#/VB.NET код, который демонстрирует, как создать поверхность чертежа PDF и использовать созданный движок чертежа для рисования различных графических объектов (рисунков и текста).
Imports System.Drawing
Imports Vintasoft.Imaging
Imports Vintasoft.Imaging.Drawing
Imports Vintasoft.Imaging.Pdf
Imports Vintasoft.Imaging.Pdf.Drawing
Imports Vintasoft.Imaging.Pdf.Tree
Class PdfDrawingEngineExample
''' <summary>
''' Creates PDF drawing engine on specified PDF page and performs drawing.
''' </summary>
''' <param name="width">PDF page width.</param>
''' <param name="height">PDF page height.</param>
''' <param name="resultImagePath">A path to save the drawing result.</param>
Public Shared Sub DrawWithPdfDrawingEngine(width As Integer, height As Integer, resultImagePath As String)
' create empty PDF document
Using document As New PdfDocument()
' page size
Dim pageSize As New RectangleF(0, 0, width, height)
' create new page of specified size
Dim page As New PdfPage(document, pageSize)
' add page to a PDF document
document.Pages.Add(page)
' create graphics from PDF page
Using graphics As PdfGraphics = PdfGraphics.FromPage(page)
' create drawing engine
Using drawingEngine As New PdfDrawingEngine(graphics, True)
' create drawing area
Dim drawingArea As New RectangleF(0, 0, width, height)
' draw objects
DrawingExample(drawingEngine, drawingArea)
End Using
End Using
' save document
document.Save(resultImagePath)
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 Vintasoft.Imaging;
using Vintasoft.Imaging.Drawing;
using Vintasoft.Imaging.Pdf;
using Vintasoft.Imaging.Pdf.Drawing;
using Vintasoft.Imaging.Pdf.Tree;
namespace CSHARP
{
class PdfDrawingEngineExample
{
/// <summary>
/// Creates PDF drawing engine on specified PDF page and performs drawing.
/// </summary>
/// <param name="width">PDF page width.</param>
/// <param name="height">PDF page height.</param>
/// <param name="resultImagePath">A path to save the drawing result.</param>
public static void DrawWithPdfDrawingEngine(int width, int height, string resultImagePath)
{
// create empty PDF document
using (PdfDocument document = new PdfDocument())
{
// page size
RectangleF pageSize = new RectangleF(0, 0, width, height);
// create new page of specified size
PdfPage page = new PdfPage(document, pageSize);
// add page to a PDF document
document.Pages.Add(page);
// create graphics from PDF page
using (PdfGraphics graphics = PdfGraphics.FromPage(page))
// create drawing engine
using (PdfDrawingEngine drawingEngine = new PdfDrawingEngine(graphics, true))
{
// create drawing area
RectangleF drawingArea = new RectangleF(0, 0, width, height);
// draw objects
DrawingExample(drawingEngine, drawingArea);
}
// save document
document.Save(resultImagePath);
}
}
/// <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.Pdf.Drawing.PdfDrawingEngine
Требования
Целевые платформы: .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5
Смотрите также