在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);

 

posted @ 2012-12-07 14:04  农村山沟沟出来的大学生  阅读(344)  评论(0编辑  收藏  举报