使用WPF,测量大量短字符串的最有效方法是什么?具体地说,我希望在给定统一格式(相同的字体、大小、粗细等)的情况下确定每个字符串的显示高度。以及字符串可能占据的最大宽度?
发布于 2009-03-10 16:29:35
最底层的技术(因此为创造性优化提供了最大的空间)就是使用GlyphRuns。
它没有很好的文档记录,但我在这里写了一个小例子:
http://smellegantcode.wordpress.com/2008/07/03/glyphrun-and-so-forth/
该示例计算出字符串的长度,这是呈现字符串之前的必要步骤。
发布于 2012-11-30 11:43:20
WPF中的:
请记住在读取DesiredSize属性之前对TextBlock调用Measure()。
如果度量是动态创建的,并且尚未显示,则必须首先调用TextBlock (),如下所示:
MyTextBlock.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
return new Size(MyTextBlock.DesiredSize.Width, MyTextBlock.DesiredSize.Height);
Silverlight中的:
不需要测量。
return new Size(TextBlock.ActualWidth, TextBlock.ActualHeight);
完整的代码如下所示:
public Size MeasureString(string s) {
if (string.IsNullOrEmpty(s)) {
return new Size(0, 0);
}
var TextBlock = new TextBlock() {
Text = s
};
#if SILVERLIGHT
return new Size(TextBlock.ActualWidth, TextBlock.ActualHeight);
#else
TextBlock.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
return new Size(TextBlock.DesiredSize.Width, TextBlock.DesiredSize.Height);
#endif
}
发布于 2012-03-03 06:38:04
这很简单,由FormattedText类来完成!试试看。
https://stackoverflow.com/questions/632445
复制相似问题