RenderSvgText.vb
'' 
'' このコードは、DioDocs for Imaging のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
'' 
Imports System
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 GrapeCity.Documents.Svg
Imports GCTEXT = GrapeCity.Documents.Text
Imports GCDRAW = GrapeCity.Documents.Drawing

Public Class RenderSvgText
    Public Function GenerateImage(
            ByVal pixelSize As Size,
            ByVal dpi As Single,
            ByVal opaque As Boolean,
            Optional ByVal sampleParams As String() = Nothing) As GcBitmap

        '' textとtspanを含むSVGを読み込みます。
        Dim svgString As String =
            "<svg width='12cm' height='3cm' viewBox='0 0 1000 300' xmlns='http://www.w3.org/2000/svg' version='1.1'>" &
            "  <g font-family='Verdana' font-size='64' >" &
            "    <text x='160' y='180' fill='blue'>Apples are not <tspan font-weight='bold' fill='orange'>oranges</tspan>.</text>" &
            "  </g>" &
            "</svg>"
        Using svg = GcSvgDocument.FromString(svgString)

            '' SVG画像と、その周囲の境界線を描画します。
            Dim bmp = New GcBitmap(pixelSize.Width, pixelSize.Height, opaque, dpi, dpi)
            Using g = bmp.CreateGraphics(Color.White)
                Dim pt = New PointF(dpi, dpi)
                g.DrawSvg(svg, pt)
                Dim sz = svg.GetIntrinsicSize(SvgLengthUnits.Pixels)
                g.DrawRectangle(New RectangleF(pt, sz), Color.MediumPurple)
            End Using

            '' 画像ファイルを保存します。
            Return bmp
        End Using
    End Function
End Class