OutlinedText.vb
''
'' このコードは、DioDocs for Imaging のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports System.Collections.Generic
Imports System.Linq
Imports System.Numerics
Imports GrapeCity.Documents.Drawing
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Imaging
Imports GCTEXT = GrapeCity.Documents.Text
Imports GCDRAW = GrapeCity.Documents.Drawing
'' アウトラインテキストの作成
Public Class OutlinedText
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, opaque, dpi, dpi)
Using g = bmp.CreateGraphics(Color.White)
Dim tl = g.CreateTextLayout()
'' テキストレイアウトを設定します。
tl.MaxWidth = g.Width
tl.MaxHeight = g.Height
tl.MarginAll = g.Resolution / 2
Const fontSize = 64
Dim rcBack = New RectangleF(0, 0, pixelSize.Width, pixelSize.Height)
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 = fontSize
}
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 = fontSize
}
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 = tf0.Font,
.FontSize = fontSize
}
tl.AppendLine("Gradient Fill", tf2)
Dim grad1 = New LinearGradientBrush(Color.Red, Color.Purple)
grad1.GradientStops = New List(Of GradientStop)() From
{
New GradientStop(Color.Orange, 1 / 6.0F),
New GradientStop(Color.Yellow, 2 / 6.0F),
New GradientStop(Color.Green, 3 / 6.0F),
New GradientStop(Color.Cyan, 4 / 6.0F),
New GradientStop(Color.Blue, 5 / 6.0F)
}
Dim tf3 = New TextFormat() With
{
.FillBrush = grad1,
.Font = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "NotoSerif-Bold.ttf")),
.FontSize = fontSize
}
tl.AppendLine("Multi-stop gradient", tf3)
Dim tf4 = New TextFormat(tf3)
tf4.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, g.Resolution / 72)
tl.AppendLine("Text outlined with 1pt wide pen", tf5)
'' 新しく作成された TextLayout や、TextLayout.Clear() を呼び出した後では、
'' PerformLayout() を呼び出す必要はありません。
g.DrawTextLayout(tl, PointF.Empty)
End Using
Return bmp
End Function
End Class