Transforms.vb
C# VB
'''' This code is part of Document Solutions for PDF .NET demos.'' Copyright (c) MESCIUS inc. All rights reserved.''Imports System.IOImports System.DrawingImports System.NumericsImports GrapeCity.Documents.PdfImports GrapeCity.Documents.TextImports GrapeCity.Documents.Drawing
'' Shows how to use graphics transformations (GcPdfGraphics.Transform property).Public Class Transforms '' Helper method drawing a filled box with text: Private Sub DrawBox(ByVal text As String, ByVal g As GcGraphics, ByVal box As RectangleF) g.FillRectangle(box, Color.FromArgb(80, 0, 184, 204)) g.DrawRectangle(box, Color.FromArgb(0, 193, 213), 1) box.Inflate(-6, -6) g.DrawString(text, New TextFormat() With {.Font = StandardFonts.Times, .FontSize = 14}, box) End Sub
Function CreatePDF(ByVal stream As Stream) As Integer Const baseTxt = "Text drawn at (0,36) in a 4""x2"" box" Dim doc = New GcPdfDocument() Dim page = doc.NewPage() Dim g = page.Graphics Dim box = New RectangleF(0, 36, 72 * 4, 72 * 2) '' #1: DrawBox($"Box 1: {baseTxt}, no transformations.", g, box) '' Dim translate0 = Matrix3x2.CreateTranslation(72 * 1, 72 * 4) Dim scale0 = Matrix3x2.CreateScale(0.5F)
'' Transforms are applied in order from last to first.
'' #2: g.Transform = scale0 * translate0 DrawBox($"Box 2: {baseTxt}, translated by (1"",4"") and scaled by 0.5.", g, box) '' #3: g.Transform = translate0 * scale0 DrawBox($"Box 3: {baseTxt}, scaled by 0.5 and translated by (1"",4"").", g, box) '' Dim translate1 = Matrix3x2.CreateTranslation(72 * 3, 72 * 5) Dim scale1 = Matrix3x2.CreateScale(0.7F) Dim rotate0 = Matrix3x2.CreateRotation((-70 * Math.PI) / 180.0F) '' 70 degrees CCW '' #4: g.Transform = rotate0 * translate1 * scale1 DrawBox($"Box 4: {baseTxt}, scaled by 0.7, translated by (3"",5""), and rotated 70 degrees counterclockwise.", g, box) '' #5: g.Transform = Matrix3x2.CreateTranslation(36, 72) * g.Transform DrawBox($"Box 5: {baseTxt}, applied current transform (Box 4), and translated by (1/2"",1"").", g, box) '' #6: g.Transform = Matrix3x2.CreateSkew((-45 * Math.PI) / 180.0F, (20 * Math.PI) / 180.0F) * Matrix3x2.CreateTranslation(72 * 3, 72 * 7) DrawBox($"Box 6: {baseTxt}, translated by (3"",7""), and skewed -45 degrees on axis X and 20 degrees on axis Y.", g, box) '' #7: g.Transform = Matrix3x2.CreateRotation(Math.PI) * Matrix3x2.CreateTranslation(page.Size.Width - 72, page.Size.Height - 72) DrawBox($"Box 7: {baseTxt}, translated by (7.5"",10""), and rotated by 180 degrees.", g, box) '' We can remove any transformations on a graphics like so: g.Transform = Matrix3x2.Identity '' '' Done: doc.Save(stream) Return doc.Pages.Count End FunctionEnd Class