我试图找出一些文字有多宽。这是我的代码:
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。你知道为什么吗?
答案 0 :(得分:1)
FormattedTextClass
不会告诉您最大线宽是多少。它反过来工作;你告诉它最大宽度,它会弄清楚如何显示文字。
此MSDN文章提供了更多信息:Drawing Formatted Text
获取示例代码并覆盖窗口的OnRender
事件,以下是在宽度上没有约束时的文本行:
当MaxTextWidth
设置为300时:
当调用SetMaxTextWidths
时传入{ 200, 500, 100 }
的双数组(当行数多于数组条目时,最后一个宽度用于所有剩余行):
在上述所有示例中,我将MaxTextHeight
设置为240。
如果您想在OnRender
的{{1}}事件中运行文章中的代码,请注意以下几点:
Window
属性Background
Transparent