This sample shows how to save and restore graphics state using PdfCanvas.SaveState and PdfCanvas.RestoreState methods.

PdfCanvas maintains a set of properties, such as pen, brush, current positions for text and graphics, font, e.t.c. This set of properties is called graphics state.

Current graphics state can be saved and previously saved state can be restored. Use PdfCanvas.SaveState() method to save current graphics state and PdfCanvas.RestoreState() method to restore last saved graphics state.

C#
using System.Diagnostics;
using System.Drawing;

namespace BitMiracle.Docotic.Pdf.Samples
{
    public static class GraphicsState
    {
        public static void Main()
        {
            // NOTE: 
            // When used in trial mode, the library imposes some restrictions.
            // Please visit http://bitmiracle.com/pdf-library/trial-restrictions.aspx
            // for more information.

            string pathToFile = "GraphicsState.pdf";

            using (PdfDocument pdf = new PdfDocument())
            {
                PdfCanvas canvas = pdf.Pages[0].Canvas;
                canvas.SaveState();

                canvas.Pen.Width = 3;
                canvas.Pen.DashPattern = new PdfDashPattern(new double[] { 5, 3 }, 2);

                canvas.CurrentPosition = new PdfPoint(20, 60);
                canvas.DrawLineTo(150, 60);

                canvas.RestoreState();

                canvas.CurrentPosition = new PdfPoint(20, 80);
                canvas.DrawLineTo(150, 80);

                pdf.Save(pathToFile);
            }

            Process.Start(pathToFile);
        }
    }
}
VB
Imports System.Diagnostics
Imports System.Drawing

Imports BitMiracle.Docotic.Pdf

Namespace BitMiracle.Docotic.Pdf.Samples
    Public NotInheritable Class GraphicsState
        Public Shared Sub Main()
            ' NOTE: 
            ' When used in trial mode, the library imposes some restrictions.
            ' Please visit http://bitmiracle.com/pdf-library/trial-restrictions.aspx
            ' for more information.

            Dim pathToFile As String = "GraphicsState.pdf"

            Using pdf As New PdfDocument()

                Dim canvas As PdfCanvas = pdf.Pages(0).Canvas
                canvas.SaveState()

                canvas.Pen.Width = 3
                canvas.Pen.DashPattern = New PdfDashPattern(New Single() {5, 3}, 2)

                canvas.CurrentPosition = New PdfPoint(20, 60)
                canvas.DrawLineTo(150, 60)

                canvas.RestoreState()

                canvas.CurrentPosition = New PdfPoint(20, 80)
                canvas.DrawLineTo(150, 80)

                pdf.Save(pathToFile)
            End Using

            Process.Start(pathToFile)
        End Sub
    End Class
End Namespace