C#, .NET の GDI+ で下記のような縁取りをした文字、いわゆるフチ文字を描画する方法をまとめておく。
基本的には GraphicsPath に文字列の形のパスを描画し、そのパスを用いてフチと塗りつぶしを描画するといった手順である。
特筆点は下記の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// OnPaint 内を想定。g は Graphics のインスタンス。
// OnPaint 以外なら CreateGraphics などで生成する。
// レイアウト枠
Rectangle r = this.ClientRectangle;
r.Inflate(-10, -10); // ちょっと小さい枠内にレイアウト
// 文字列位置の設定
StringFormat sf = new StringFormat();
sf.LineAlignment = StringAlignment.Far; // 画面下部(垂直方向位置)
sf.Alignment = StringAlignment.Center; // 画面中央(水平方向位置)
// アンチエイリアス
g.SmoothingMode = SmoothingMode.HighQuality;
// パスを作成
GraphicsPath path = new GraphicsPath();
path.AddString("Text!", this.Font.FontFamily,
(int)this.Font.Style, this.Font.Height, r, sf); // 文字列のパスを追加
// フチを描く
Pen p = new Pen(Color.White, 5.0f);
p.LineJoin = LineJoin.Round;
g.DrawPath(p, path);
// 塗りつぶす
g.FillPath(Brushes.Black, path);
// 後始末
p.Dispose();
path.Dispose();
Kenz Yamada(山田研二)。1984年生。大阪。ちょっとずつ好きなプログラム作ってます。
好きなものはカメラと旅行。ガジェットや身の回り、ちょっとこだわります。
詳しくは Web mixi で。