C#で画像にテキストを描画するプログラム

コンピュータ
DrawStringメソッドを使ってビットマップにテキストを描画してみます。

ソース

ファイル名:icatchgen.cs

using System;
using System.Drawing;

/**
<summary>画像にテキストを描画するプログラム</summary>
*/
class Program
{
    /**
    <summary>画像にテキストを描画</summary>
    <param name="fileName">出力する画像ファイルのパス</param>
    <param name="drawText">描画するテキスト</param>
    */
    static void drawTextToImageFile(string fileName, string drawText)
    {
        const int fontSize = 90;
        const string fontFamily = "MS UI Gothic";
        const int width = 800;  // 画像の幅
        const int height = 600; // 画像の高さ
        const int margin = 64; // マージン

        using(Bitmap bmp = new Bitmap(width, height))
        {
            using(Graphics g = Graphics.FromImage(bmp))
            using(Font fnt = new Font(fontFamily, fontSize))
            using(Pen bluePen = new Pen(Color.DeepSkyBlue, margin))
            using(Pen grayPen = new Pen(Color.Gainsboro, margin))
            {
                // 背景
                Rectangle bgRect = new Rectangle(0, 0, width, height);
                g.FillRectangle(Brushes.White, bgRect);

                // 枠
                grayPen.LineJoin = System.Drawing.Drawing2D.LineJoin.Round; 
                Rectangle bdsRect = new Rectangle(margin+6, margin+6, width-margin*2, height-margin*2);
                g.DrawRectangle(grayPen, bdsRect);
                bluePen.LineJoin = System.Drawing.Drawing2D.LineJoin.Round; 
                Rectangle bdRect = new Rectangle(margin, margin, width-margin*2, height-margin*2);
                g.DrawRectangle(bluePen, bdRect);
                g.FillRectangle(Brushes.DeepSkyBlue, bdRect);

                // テキスト
                g.DrawString(drawText, fnt, Brushes.White, bdRect);
            }

            bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
        }

    }
    /**
    <summary>利用法</summary>
    */
    static void Usage()
    {
        Console.WriteLine("icathcgen.exe ファイル名 文字列");
    }
    /**
    <summary>エントリーポイント</summary>
    */
    static void Main(string[] args)
    {
        if (args.Length < 2)
        {
            Usage();
            Environment.Exit(0);
        }

        string fileName = args[0];
        string drawText = args[1];

        Console.WriteLine("{0} {1}", fileName, drawText);
        drawTextToImageFile(fileName, drawText);
    } // Main end
} // class end

コンパイル

PS>csc icatchgen.cs

実行

PS>.\icatchgen.exe output.png "描画する文字列"

こんな感じのファイルが出来上がる

コメント