RotatedText.vb
'' 完毕:
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Drawing
Imports System.Numerics

'' 演示如何使用 GcPdfGraphics.Transform 旋转文本字符串。
'' 另请参阅RotatedText2。
Public Class RotatedText
    Function CreatePDF(ByVal stream As Stream) As Integer
        '' 旋转角度,顺时针度数:
        Dim angle = -45.0F
        ''
        Dim doc = New GcPdfDocument()
        Dim g = doc.NewPage().Graphics
        '' 创建文本布局,选择字体和字体大小:
        Dim tl = g.CreateTextLayout()
        tl.DefaultFormat.Font = StandardFonts.Times
        tl.DefaultFormat.FontSize = 24
        '' 添加文本,并进行布局:
        tl.Append("旋转的文本。")
        tl.PerformLayout(True)
        '' 文本插入点位于 (1",1"):
        Dim ip = New PointF(72, 72)
        '' 现在我们有了文本大小,创建文本矩形,左上角位于插入点:
        Dim rect = New RectangleF(ip.X, ip.Y, tl.ContentWidth, tl.ContentHeight)
        '' 围绕其边界矩形的中心旋转文本:
        '' 我们现在有了文本大小,并且可以绕其中心旋转它:
        g.Transform = Matrix3x2.CreateRotation((angle * Math.PI) / 180.0F, New Vector2(ip.X + tl.ContentWidth / 2, ip.Y + tl.ContentHeight / 2))
        '' 绘制旋转文本和边框:
        g.DrawTextLayout(tl, ip)
        g.DrawRectangle(rect, Color.Black, 1)
        '' 删除旋转并在非旋转文本所在的位置绘制边界矩形:
        g.Transform = Matrix3x2.Identity
        g.DrawRectangle(rect, Color.ForestGreen, 1)
        ''
        '' 完毕:
        doc.Save(stream)
        Return doc.Pages.Count
    End Function
End Class