2013年04月09日

WPFサンプル:DrawingBrushで枠付きテキストを表示する

   このエントリーをはてなブックマークに追加 Clip to Evernote
DrawingBrushで枠付きテキストを表示するサンプルです。

まずは、サンプルプログラムのスクリーンショットを示します。

DrawingBrush1

DrawingBrush2

TextBoxに文字列を入力し、ボタンを押すと、枠付き文字列が表示されます。
ここでは、枠にグラデーション効果を付けています。
ウィンドウサイズを変更するとそれに追随して枠付きテキストのサイズも変化します。

まずは、XAML。


いたってシンプルなXAMLです。
枠付きテキストを表示する処理はすべてC#のコードとして書いています。

以下C#のコードです。


このような枠付きテキストを表示するには、DrawingObjectを使います。

簡単に何をやっているか説明します。
button1_Clikcでは、textBox1のフォント情報を使いTypefaceオブジェクトを生成しています。
このTypefaceオブジェクトと入力文字列をGetFrameDrawingメソッドに渡し、Drawingオブジェクトを得ています。
このDrawingオブジェクトからDrawingBrushを生成し、Canvasの背景にセットすることで、枠付き文字を描画しています。

GetFrameDrawing(引数には、描画したい文字列とそのFontFaceが渡ってきます) メソッドでは、引数で渡されたTypefaceオブジェクトから、Geometry(幾何学的図形を定義するクラス)を作成します。これがテキストを図形として定義したものです。
このGeometryに対し、グラデーション用のBrushを使って、枠付きのテキストを表すGeometryDrawing オブジェクトを生成しています。
塗りつぶしは行わないことで枠付き文字列にしているので、GeometryDrawingのコンストラクタの第1引数には、nullを指定しています。


なお、この方法では、Canvasのサイズに合わせて枠付き文字が描画されます。
つまり、フォントサイズを 64 と指定していますが、64のサイズでは描画されません。DrawingBrushを使って、指定したフォントサイズで描画する方法が分かりませんでした。
このやり方ではなく、Pathオブジェクトを利用すれば、指定したフォントサイズで枠付きテキストを描画できるようです。
次回は、そのサンプルを掲載したいと思います。



 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52312432