这是我的FormattedText
,它是画布的孩子:
this.formattedText = new FormattedText(
"This is a text to test",
CultureInfo.CurrentUICulture,
this.FlowDirection,
new Typeface(this.FontFamily, this.FontStyle, this.FontWeight, FontStretches.Normal),
this.FontSize,
Fill);
请看这张图片:
第三种形式是我想要的东西,
但我不知道如何计算适合身高的字体大小(非宽度),
因为有不同的字体,不同的高度和不同的FontFamily.LineSpacing
。
注意:我不想使用ViewBox
,因为我想将文本设置为抓取文本和自动收录器的动画。
更新
某些字体需要FontSize
超过控件的高度,它取决于FontFamily.LineSpacing
。我可以通过设置LineHeight
来移除上部空格,但我无法根据FontFamily.LineSpacing
计算新的FontSize。
请帮帮我。
答案 0 :(得分:3)
您可以使用循环来获取最大字体大小(步骤1):
int MaxFontSize = 0;
FormattedText Ft = ... //Your formatted text
while(true)
{
Ft.SetFontSize(MaxFontSize);
if (Ft.Height > MaxHeigthOfControl)
{
//Too large! Maxmimum size found one step before
MaxFontSize--;
break;
}
else
{
MaxFontSize++;
}
}
//MaxFontSize is the maximum possible FontSize
答案 1 :(得分:1)
好的,您需要了解FormattedText控件比您想象的更复杂。
有一个LineHeight
,BaseLine
和TextAlignment
属性会影响您感兴趣的布局区域。请尝试更改这些属性以获得所需内容