OutlinedText.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.Collections.GenericImports GrapeCity.Documents.PdfImports GrapeCity.Documents.TextImports GrapeCity.Documents.DrawingImports GCTEXT = GrapeCity.Documents.TextImports GCDRAW = GrapeCity.Documents.Drawing
'' This sample shows how to render text with stroked glyph outlines,'' and with glyphs filled using solid or gradient brushes.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( "This sample shows how to draw text with stroked glyph outlines, " + "and how to fill glyphs with solid or gradient brushes.", page)
Dim tl = g.CreateTextLayout()
'' Set text flow and other layout properties: 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(GCDRAW.Image.FromFile(Path.Combine("Resources", "Images", "purples.jpg")), rcBack, Nothing, ImageAlign.StretchImage)
Dim tf0 = New TextFormat() With { .ForeColor = Color.LemonChiffon, .Hollow = True, .Font = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "NotoSans-Bold.ttf")), .FontSize = 48 } tl.AppendLine("Hollow Text", tf0)
Dim tf1 = New TextFormat() With { .StrokePen = Color.DarkMagenta, .FillBrush = New GCDRAW.SolidBrush(Color.Yellow), .Font = GCTEXT.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 = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "NotoSans-Regular.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 = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "NotoSans-Regular.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 GCDRAW.Pen(Color.DarkRed, 1) tl.AppendLine("Text outlined with 1pt wide pen", tf5)
'' It is not necessary to call PerformLayout() for a newly created TextLayout '' or after a call to TextLayout.Clear(): g.DrawTextLayout(tl, PointF.Empty)
'' Done doc.Save(stream) End SubEnd Class