将文本大小调整为可能的最大大小以适合包装的绘图矩形

时间:2012-07-09 17:44:53

标签: wpf .net-4.0 fonts resize viewbox

这是许多类似的问题,但没有好的答案?我使用上下文绘制在某个矩形“720,576”上绘制输入文本,现在我需要将整个文本与最大字体大小相符,同时保持行数?

我试图创建一个方程来计算但没有用。我甚至试图循环大小,直到文本被剪辑,但我无法测试那个条件,我搜索了一个星期看到类似但没有用的东西!

最后我尝试使用一个接近我想要的视图框,但它不会让文本块内部为多行,因为它总是重新调整宽度,包含一行中的所有文本。

这是我得到的:

<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="720" Width="576">
<Viewbox >
    <TextBlock TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center Text="how are you doining how are you doining how are you doining how are you doining how are you doining how are you doining how are you doining how are you doining how are you doining" " />
</Viewbox>

任何帮助都将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:0)

我无法使用您复制/粘贴到新项目中的示例重现您描述的行为。它确实在几行上写文字;也许你在一个对象上有一个默认的setter,也许是textbox ......

确定非常简单:在TextBox上设置宽度,这样你的TextBox就会换行。也许你想要宽度为ViewBox(祖先绑定)的宽度。

答案 1 :(得分:0)

我遇到了同样的问题。这是一个修复:

<Viewbox StretchDirection="DownOnly">
    <Grid MaxWidth="1000" MaxHeight="100">
         <TextBlock TextWrapping="Wrap" FontSize="42" VerticalAlignment="Center" Text="very very very very very very very very very very very very very very very very long line"/>
    </Grid>
</Viewbox>

因此,通过扩展文本行,它将被调整大小,直到它不是那么小,然后它将被包装到下一行