在windows8 metro/windows phone中计算字的宽度

在windows 8和windows phone中有地方我们需要计算字的宽度,例如在显示的时候需要截取多余的字变成...,还有在数据排版上面这个也是必不可少的。

一个字符显示的像素宽度与字体和字体大小有关系。我用到的是一个比较笨拙的方法,那就是拿textblock去量。

具体如下:

        TextBlock tb = new TextBlock();

            tb.FontFamily = new System.Windows.Media.FontFamily("微软雅黑");

            tb.FontSize = 50;

            tb.Text = "hello";

            System.Diagnostics.Debug.WriteLine("宽度:" + tb.ActualWidth + " 高度:" + tb.ActualHeight);

 这个方法很简单,但是到windows 8上面就不一样了。

在win8 metro程序里面,TextBlock必须要显示到UI上才能得到它的宽度和高度。这就麻烦了。

最后发现一个东西能够将它量出来。那就是矩形。

Rect rect = new Rect(0, 0, 1024, 1024);



TextBlock tb = new TextBlock();

tb.FontFamily = new FontFamily("微软雅黑");

tb.FontSize = 50;

tb.Text = "hello";

tb.Arrange(rect);

System.Diagnostics.Debug.WriteLine("宽度:" + tb.ActualWidth + " 高度:" + tb.ActualHeight);

 

你可能感兴趣的:(windows phone)