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