Transforms.vb
''
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports System.Numerics
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Drawing
'' グラフィックの変形(GcPdfGraphics.Transform プロパティ)の使用方法を示します。
Public Class Transforms
'' 塗りつぶされたボックスにテキストを描画するヘルパーメソッドです。
Private Sub DrawBox(ByVal text As String, ByVal g As GcGraphics, ByVal box As RectangleF)
g.FillRectangle(box, Color.FromArgb(80, 0, 184, 204))
g.DrawRectangle(box, Color.FromArgb(0, 193, 213), 1)
box.Inflate(-6, -6)
g.DrawString(text, New TextFormat() With {.FontName = "Yu Gothic", .FontSize = 14}, box)
End Sub
Function CreatePDF(ByVal stream As Stream) As Integer
Const baseTxt = "座標[0,36][4×2インチ]の原型" & vbCrLf
Dim doc = New GcPdfDocument()
Dim page = doc.NewPage()
Dim g = page.Graphics
Dim box = New RectangleF(0, 36, 72 * 4, 72 * 2)
'' #1:
DrawBox($"Box 1: {baseTxt}変形なし", g, box)
''
Dim translate0 = Matrix3x2.CreateTranslation(72 * 1, 72 * 4)
Dim scale0 = Matrix3x2.CreateScale(0.5F)
'' 変換は最後から順に適用されます。
'' #2:
g.Transform =
scale0 *
translate0
DrawBox($"Box 2: {baseTxt}スケール50% \n移動[X軸=1:Y軸=4インチ]", g, box)
'' #3:
g.Transform =
translate0 *
scale0
DrawBox($"Box 3: {baseTxt}移動[X軸=1:Y軸=4インチ] \nスケール50%", g, box)
''
Dim translate1 = Matrix3x2.CreateTranslation(72 * 3, 72 * 5)
Dim scale1 = Matrix3x2.CreateScale(0.7F)
Dim rotate0 = Matrix3x2.CreateRotation((-70 * Math.PI) / 180.0F) '' 70 degrees CCW
'' #4:
g.Transform =
rotate0 *
translate1 *
scale1
DrawBox($"Box 4: {baseTxt}回転[反時計70°] 移動[X軸=3:Y軸=7インチ] \nスケール70%", g, box)
'' #5:
g.Transform =
Matrix3x2.CreateTranslation(36, 72) *
g.Transform
DrawBox($"Box 5: {baseTxt}「Box 4」の変更を適用後 \n移動[X軸=0.5:Y軸=1インチ]", g, box)
'' #6:
g.Transform =
Matrix3x2.CreateSkew((-45 * Math.PI) / 180.0F, (20 * Math.PI) / 180.0F) *
Matrix3x2.CreateTranslation(72 * 3, 72 * 7)
DrawBox($"Box 6: {baseTxt}移動[X軸=3:Y軸=7インチ] \n歪み[X軸=-45°:Y軸=20°]", g, box)
'' #7:
g.Transform =
Matrix3x2.CreateRotation(Math.PI) *
Matrix3x2.CreateTranslation(page.Size.Width - 72, page.Size.Height - 72)
DrawBox($"Box 7: {baseTxt}移動[X軸=7.5:Y軸=10インチ] \n回転[180°]", g, box)
'' グラフィックス上の変形をすべて削除することができます。
g.Transform = Matrix3x2.Identity
''
'' PDF ドキュメントを保存します。
doc.Save(stream)
Return doc.Pages.Count
End Function
End Class