OutlinedText.vb
'' 
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' Copyright (c) GrapeCity inc. All rights reserved.
'' 
Imports System.IO
Imports System.Drawing
Imports System.Collections.Generic
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Drawing

'' このサンプルは、ストロークグリフのアウトラインと、単色またはグラデーション
'' ブラシを使用して塗りつぶされたグリフを使用してテキストを描画する方法を示します。
Public Class OutlinedText
    Sub CreatePDF(ByVal stream As Stream)
        Dim doc = New GcPdfDocument()
        Dim page = doc.NewPage()
        Dim g = page.Graphics

        Dim rc = Util.AddNote(
            "このサンプルは、ストロークグリフのアウトラインを使用してテキストを" +
            "描画する方法、およびソリッドブラシまたはグラデーションブラシを使用" +
            "してグリフを塗りつぶす方法を示します。",
            page)

        Dim tl = g.CreateTextLayout()

        '' テキストフローと他のレイアウトプロパティを設定します。
        tl.MaxWidth = page.Size.Width
        tl.MaxHeight = page.Size.Height
        tl.MarginAll = 72
        tl.MarginTop = rc.Bottom + 36

        Dim rcBack = New RectangleF(tl.MarginLeft, tl.MarginTop, tl.MaxWidth.Value - tl.MarginLeft - tl.MarginRight, tl.MaxHeight.Value - tl.MarginTop - tl.MarginBottom)
        g.DrawImage(Image.FromFile(Path.Combine("Resources", "Images", "purples.jpg")), rcBack, Nothing, ImageAlign.StretchImage)

        Dim tf0 = New TextFormat() With
        {
            .ForeColor = Color.LemonChiffon,
            .Hollow = True,
            .Font = Font.FromFile(Path.Combine("Resources", "Fonts", "GOTHICB.TTF")),
            .FontSize = 48
        }
        tl.AppendLine("Hollow Text", tf0)

        Dim tf1 = New TextFormat() With
        {
            .StrokePen = Color.DarkMagenta,
            .FillBrush = New SolidBrush(Color.Yellow),
            .Font = Font.FromFile(Path.Combine("Resources", "Fonts", "FoglihtenNo07.otf")),
            .FontSize = 48
        }
        tl.AppendLine("Outlined Text", tf1)

        Dim grad0 = New LinearGradientBrush(Color.Red, New PointF(0, 0), Color.Blue, New PointF(1, 0))
        Dim tf2 = New TextFormat() With
        {
            .FillBrush = grad0,
            .Font = Font.FromFile(Path.Combine("Resources", "Fonts", "cambriab.ttf")),
            .FontSize = 48
        }
        tl.AppendLine("Gradient Fill", tf2)

        Dim grad1 = New LinearGradientBrush(Color.Red, Color.Purple)
        grad1.GradientStops = New List(Of GradientStop)()
        grad1.GradientStops.Add(New GradientStop(Color.Orange, 1 / 6.0F))
        grad1.GradientStops.Add(New GradientStop(Color.Yellow, 2 / 6.0F))
        grad1.GradientStops.Add(New GradientStop(Color.Green, 3 / 6.0F))
        grad1.GradientStops.Add(New GradientStop(Color.Cyan, 4 / 6.0F))
        grad1.GradientStops.Add(New GradientStop(Color.Blue, 5 / 6.0F))
        Dim tf3 = New TextFormat() With
        {
            .FillBrush = grad1,
            .Font = Font.FromFile(Path.Combine("Resources", "Fonts", "cambriab.ttf")),
            .FontSize = 48
        }
        tl.AppendLine("Multi-stop gradient", tf3)

        Dim tf4 = New TextFormat(tf3) With
        {
            .StrokePen = Color.GreenYellow
        }
        tl.AppendLine("Multi-stop gradient with outline", tf4)

        Dim tf5 = New TextFormat(tf4)
        tf5.Hollow = True
        tf5.StrokePen = New Pen(Color.DarkRed, 1)
        tl.AppendLine("Text outlined with 1pt wide pen", tf5)

        '' 新規に作成された	TextLayout に対して、または TextLayout.Clear() メソッドを
        '' 呼び出した後で、PerformLayout() を呼び出す必要はありません。
        g.DrawTextLayout(tl, PointF.Empty)

        '' PDF ドキュメントを保存します。
        doc.Save(stream)
    End Sub
End Class