In This Topic
Provides the drawing engine, which is based on PDF drawing surface.
Object Model
Syntax
Example
This C#/VB.NET code shows how to create PDF drawing surface and use created drawing engine for drawing of different graphic objects (figures and text).
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);
}
}
}
}
}
Inheritance Hierarchy
System.Object
 Vintasoft.Imaging.Drawing.DrawingEngine
   Vintasoft.Imaging.Pdf.Drawing.PdfDrawingEngine
Requirements
Target Platforms: .NET9; .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5
See Also