Antialiasing.vb
''
'' This code is part of GrapeCity Documents for Imaging samples.
'' Copyright (c) GrapeCity, Inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports System.Numerics
Imports GrapeCity.Documents.Drawing
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Imaging

'' This sample shows the different (anti)aliasing modes of rendering text:
'' - No anti-aliasing, very fast but poor quality (not recommended).
'' - Fast anti-aliasing. This is the default that provides good quality and fast rendering.
'' - Slow anti-aliasing. Highest quality but slower than the default.
Public Class Antialiasing
    Function GenerateImage(
        ByVal pixelSize As Size,
        ByVal dpi As Single,
        ByVal opaque As Boolean,
        Optional ByVal sampleParams As String() = Nothing) As GcBitmap

        Dim bmp = New GcBitmap(pixelSize.Width, pixelSize.Height, True, dpi, dpi)
        Using g = bmp.CreateGraphics(Color.FromArgb(&HFFCCF2FF))
            g.Renderer.Multithreaded = True

            Dim text = Util.LoremIpsum()
            Dim tsize = New SizeF(bmp.Width / 2, bmp.Height / 2)
            Dim pad = 96.0F / 4

            Dim tfcap = New TextFormat() With
                {
                    .Font = Font.FromFile(Path.Combine("Resources", "Fonts", "timesbd.ttf")),
                    .FontSize = 16
                }

            Dim tl = g.CreateTextLayout()
            tl.DefaultFormat.Font = Font.FromFile(Path.Combine("Resources", "Fonts", "times.ttf"))
            tl.DefaultFormat.FontSize = 14
            tl.TextAlignment = TextAlignment.Justified
            tl.FirstLineIndent = 96 / 2
            tl.ParagraphSpacing = 96 / 8
            tl.MaxWidth = tsize.Width
            tl.MaxHeight = tsize.Height
            tl.MarginAll = pad

            Dim tloc = PointF.Empty
            Using g.PushClip(New RectangleF(tloc, tsize))
                bmp.Renderer.Aliased = True
                tl.AppendLine("No anti-aliasing (worst quality)", tfcap)
                tl.Append(text)
                tl.PerformLayout(True)
                g.DrawTextLayout(tl, tloc)
            End Using
            tloc.X += tsize.Width
            Using g.PushClip(New RectangleF(tloc, tsize))
                bmp.Renderer.Aliased = False
                bmp.Renderer.SlowAntialiasing = False
                tl.Clear()
                tl.AppendLine("Fast anti-aliasing (default quality)", tfcap)
                tl.Append(text)
                tl.PerformLayout(True)
                g.DrawTextLayout(tl, tloc)
            End Using
            tloc.X = 0
            tloc.Y += tsize.Height
            Using g.PushClip(New RectangleF(tloc, tsize))
                bmp.Renderer.Aliased = False
                bmp.Renderer.SlowAntialiasing = True
                tl.Clear()
                tl.AppendLine("Slow anti-aliasing (highest quality)", tfcap)
                tl.Append(text)
                tl.PerformLayout(True)
                g.DrawTextLayout(tl, tloc)
            End Using
        End Using
        Return bmp
    End Function
End Class