FormattedText.GetMaxTextWidths返回null - 为什么?

时间:2010-09-26 06:58:50

标签: wpf

我试图找出一些文字有多宽。这是我的代码:

FormattedText ft = new FormattedText("Line 1\r\nLine 2",
                System.Globalization.CultureInfo.CurrentCulture,
                System.Windows.FlowDirection.LeftToRight,
                new Typeface(FontFamily, FontStyle, FontWeight, FontStretch),
                fontSize,
                brush);
double[] w = ft.GetMaxTextWidths();

问题在于w始终为null。你知道为什么吗?

1 个答案:

答案 0 :(得分:1)

FormattedTextClass不会告诉您最大线宽是多少。它反过来工作;你告诉它最大宽度,它会弄清楚如何显示文字。

此MSDN文章提供了更多信息:Drawing Formatted Text

获取示例代码并覆盖窗口的OnRender事件,以下是在宽度上没有约束时的文本行:

alt text

MaxTextWidth设置为300时:

alt text

当调用SetMaxTextWidths时传入{ 200, 500, 100 }的双数组(当行数多于数组条目时,最后一个宽度用于所有剩余行):

alt text

在上述所有示例中,我将MaxTextHeight设置为240。

如果您想在OnRender的{​​{1}}事件中运行文章中的代码,请注意以下几点:

  • 设置窗口Window 属性Background
  • 添加一行代码以在文本后面绘制白色背景:
  

Transparent