たまにはこんな記事も。
Windows Formでは表示文字幅の取得を行うのにGraphics.MeasureStringを利用して文字幅の取得が行っていたのですが、WPFではGraphicsが取得できないのでこの方法が利用できません。
もちろん、相互運用のシナリオを利用すればなんとかできなくもないですが、あまりスマートな方法じゃないかなぁ・・・と思っていたらSystem.Windows.Mediaにちょうどいい感じのものがありました。
というワケで、それを利用し、MeasureStringもどきを作成してみました。
こんな感じですね。
1: private Size MeasureString(string text, double fontSize, string typeFace)
2: {
3: var ft = new FormattedText(text, CultureInfo.CurrentCulture,
4: FlowDirection.LeftToRight,
5: new Typeface(typeFace),
6: fontSize,
7: Brushes.White);
8:
9: return new Size(ft.Width, ft.Height);
10: }
もちろん、System.Globalizationなどもusingしておく必要はありますが、とりあえず、これでなんとかなったのでメモ(^^;