这是我的 FormattedText
,它是 Canvas 的子元素:
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。
请帮帮我。
最佳答案
您可以使用循环来获取最大字体大小(步长 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
关于c# - WPF 格式化文本 : Calculate font size to fill available height space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37167087/