VB.NET で縁取り文字を描く(強引に)

ちょっと強引な方法なのですが、VB.NET で、縁取り文字を描画する方法を紹介します。
縁取り文字とは、文字の周りに枠(縁取り)をつけて文字の輪郭を強調する文字装飾です。
別名、袋文字・白抜き文字ともいうようです。

[adsense1]

強引というのは、文字列を少しずつずらして重ねて何度も書いているだけというアナログな方法だからです。
もっとスマートな方法もあると思うのですが、縁取り部分の太さも簡単に変更できるしアンチエイリアスすればある程度きれいに見えるのでまぁ良しとします。

まず、フォームにピクチャーボックス(Picturebox1)を配置します。
そのピクチャーボックス上に縁取り文字を描画します。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim x As Integer = 0 '表示位置(X軸)
    Dim y As Integer = 0 '表示位置(Y軸)
    Dim edge As Integer = 3 '縁取りの太さ
    Dim FontName As String = "Meiryo UI" 'フォント
    Dim FontSize As Integer = 50 'フォントサイズ
    Dim strMoji As String = "おやすみなさい" '描画する文字列

    PictureBox1.Image = New Bitmap(PictureBox1.Width, PictureBox1.Height)

    Using g As Graphics = Graphics.FromImage(PictureBox1.Image)
        'アンチエイリアス(なめらかな文字にする)
        g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias

        Using fnt As New Font(FontName, FontSize)
            '縁取り部分の文字を描画
            For i As Integer = -edge To edge
                For ii As Integer = -edge To edge
                    g.DrawString(strMoji, fnt, Brushes.Black, x + i, y + ii)
                Next ii
            Next i
            '本体部分の文字を描画
            g.DrawString(strMoji, fnt, Brushes.White, x, y)
        End Using
    End Using

    'ついでに画像ファイルとして保存する
    PictureBox1.Image.Save("C:\秘密\oyasumi.png", System.Drawing.Imaging.ImageFormat.Png)

End Sub

for 文のところで、縁取り部分の文字を描画しています。

vbnet-outline-character01

その後に、その上から本体部分の文字を描画しています。

vbnet-outline-character02

edge の数値を変えれば、縁取りの太さを変更できます。

Using ステートメントを使っているので、g と fnt は Dispose しなくてよいです。
Using ステートメントは、.NET Framework 2.0以降であれば使用できます。

[adsense2]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください