Gradients.vb
''
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Drawing
Imports GCTEXT = GrapeCity.Documents.Text
Imports GCDRAW = GrapeCity.Documents.Drawing
'' LinearGradientBrush と RadialGradientBrush を使用して
'' グラデーション塗りを作成する方法を示します。
Public Class Gradients
Function CreatePDF(ByVal stream As Stream) As Integer
Dim doc = New GcPdfDocument()
Dim g = doc.NewPage().Graphics
Dim testRectSize = New SizeF(72 * 4, 72)
Dim dy = 12
'' ラベルを描画するテキストレイアウト。
Dim tl = g.CreateTextLayout()
tl.DefaultFormat.FontName = "Yu Gothic"
tl.DefaultFormat.FontSize = 16
tl.DefaultFormat.ForeColor = Color.Chartreuse
tl.MaxWidth = testRectSize.Width
tl.MaxHeight = testRectSize.Height
tl.TextAlignment = TextAlignment.Center
tl.ParagraphAlignment = ParagraphAlignment.Center
'' ノート:
Dim rc = Util.AddNote("LinearGradientBrush を使用した線形グラデーション:", doc.Pages.Last, New RectangleF(72, 36, 500, 100))
'' テキストの挿入位置。
Dim ip = New PointF(rc.Left, rc.Bottom + dy)
'' グラデーションが塗りつぶされた矩形を描画するローカルアクション。
Dim drawSwatch As Action(Of GCDRAW.Brush, String) =
Sub(ByVal b_, ByVal txt_)
Dim rect = New RectangleF(ip, testRectSize)
'' 矩形をグラデーションブラシで塗りつぶします。
g.FillRectangle(rect, b_)
'' 境界線やテキストを描画します。
g.DrawRectangle(rect, Color.Magenta)
tl.Clear()
tl.Append(txt_)
tl.MaxHeight = testRectSize.Height
tl.MaxWidth = testRectSize.Width
tl.PerformLayout(True)
g.DrawTextLayout(tl, ip)
ip.Y += rect.Height + dy
End Sub
'' 水平グラデーション。
Dim linearGradBrush = New LinearGradientBrush(Color.Red, Color.Blue)
drawSwatch(linearGradBrush, $"線形グラデーション{vbCrLf}{linearGradBrush.StartPoint} から {linearGradBrush.EndPoint} まで")
'' 垂直グラデーション。
linearGradBrush = New LinearGradientBrush(Color.Red, New PointF(0, 0), Color.Green, New PointF(0, 1))
drawSwatch(linearGradBrush, $"線形グラデーション{vbCrLf}{linearGradBrush.StartPoint} から {linearGradBrush.EndPoint} まで")
'' 対角線グラデーション(対角線をよりよく表示するためにスウォッチの高さを上げます)。
testRectSize.Height *= 2
linearGradBrush = New LinearGradientBrush(Color.Red, New PointF(0, 0), Color.Teal, New PointF(1, 1))
drawSwatch(linearGradBrush, $"線形グラデーション{vbCrLf}{linearGradBrush.StartPoint} から {linearGradBrush.EndPoint} まで")
'' 放射グラデーション。
rc = Util.AddNote("RadialGradientBrush を使用した放射グラデーション:", doc.Pages.Last, New RectangleF(ip, New SizeF(500, 100)))
ip.Y = rc.Bottom + dy
'' 中央に中心点。
Dim radialGradBrush = New RadialGradientBrush(Color.Orange, Color.Purple)
drawSwatch(radialGradBrush, $"放射グラデーション{vbCrLf}原点 {radialGradBrush.GradientOrigin}")
'' 右下隅に中心点。
radialGradBrush = New RadialGradientBrush(Color.OrangeRed, Color.DarkBlue, New PointF(1, 1))
drawSwatch(radialGradBrush, $"放射グラデーション{vbCrLf}原点{radialGradBrush.GradientOrigin}")
''
'' PDF ドキュメントを保存します。
doc.Save(stream)
Return doc.Pages.Count
End Function
End Class