在Viewbox中让TextBlock/Label按比例缩放而不产生不良填充效果

3

以下是我非常简单的XAML代码:

<Window x:Class="Test.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300" Background="Black" Padding="0" Margin="0" >
    <Viewbox Margin="0">
        <TextBlock Text="Test" Background="AliceBlue" Foreground="Red" 
            Padding="0" Margin="0" />
    </Viewbox>
</Window>

这应该是将标签/文本块(我已经尝试过两种)按比例填充窗口的尽可能多的空间,同时保持文本的纵横比。问题是,如果你拖动窗口大小,你会发现似乎在文本的顶部和底部有一些看不见、无法更改的填充。
左右似乎没有这个问题(左图),但顶部和底部有(右图):
在这里,我指出了我所说的额外填充:
我期望它的渲染结果更像这样(我手动处理了一下,所以纵横比不完美):
有人曾经克服过这个问题吗?也许我需要直接用 GDI+ 绘制这个文本,但我甚至不确定从哪里开始,所以任何我应该在 Google 上搜索的关键词也将不胜感激!

注意:即使将“Viewbox”设置为“Stretch =”Fill“”,文本上方和下方仍会出现相同的奇怪填充。 - Adam Nofsinger
1个回答

1

据我所知,这是字体的一部分,请尝试将FontFamily设置为Webdings

Screenshot


哎呀呀... 看来 WPF 并不是从渲染的顶部和底部查看文本,而是根据字体告诉它所需的高度来查看?嗯...我猜我需要找另一种字体,或者尝试找到另一种渲染这些内容的方法(我猜是使用 GDI+ 之类的绘图工具)。 - Adam Nofsinger
嗯,你也可以手动剪切,使用负面的MarginsClipToBounds等方法。当然,这并不是理想的解决方案。 - H.B.
我最终使用了类似于负边距“解决方法”的东西。我将我的文本放在画布上,并将顶部设置为负值,高度设置为远远超过100%。 - Adam Nofsinger
当然,还有另一种方法,你也可以使用 TranslateTransform - H.B.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接