[WPF]縁取り文字(袋文字)の書き方


WPFには標準で縁取り文字を使用できませんが、マイクロソフトがサンプルコードを提供しています。
サンプルコードは以下からダウンロードできます。
https://msdn.microsoft.com/en-us/library/vstudio/bb295245%28v=vs.90%29.aspx
このサンプルコードは、縁取りを太くすると下の画像の様に中の文字がつぶれてしまいます。
original.png

サンプルコードを以下の様に修正することで対策を行えます。
OutlineTextControl.cs

protected override void OnRender(DrawingContext drawingContext)
{
// Draw the outline based on the properties that are set.
drawingContext.DrawGeometry(Fill, new System.Windows.Media.Pen(Stroke, StrokeThickness), _textGeometry);
//縁取り内に文字のみを再度描画する(<- ここを追加する)
drawingContext.DrawGeometry(Fill, null, _textGeometry);
// Draw the text highlight based on the properties that are set.
if (Highlight == true)
{
drawingContext.DrawGeometry(null, new System.Windows.Media.Pen(Stroke, StrokeThickness), _textHighLightGeometry);
}
}

この修正を行うことで以下の様に、文字を潰れないようにできます。
修正後.png

修正したファイルは以下からダウンロードできます。
 outlinetextcontrolviewer_fix.zip


0 件のコメント :

コメントを投稿