在WPF中剪切旋转对象

i86rm4rw  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(149)

我想制作一组文本旋转90度的按钮。我创建了所需的布局,但当我将其附加到按钮时,发现该布局根据按钮的(未旋转的)布局进行了剪切。我还不知道发生了什么,但我创建了一个没有按钮的简化案例。以下是我的XAML:

<Border Height="100" Width="50" BorderThickness="1" BorderBrush="Black">
                <TextBlock>This is a test</TextBlock>
        </Border>

这将生成带有剪切文本的边框(如预期)

但如果我旋转文本,则会产生以下XAML:

<Border Height="100" Width="50" BorderThickness="1" BorderBrush="Black">
            <TextBlock RenderTransformOrigin="0.5,0.5">
                <TextBlock.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform/>
                        <SkewTransform/>
                        <RotateTransform Angle="90"/>
                        <TranslateTransform/>
                    </TransformGroup>
                </TextBlock.RenderTransform>This is a test</TextBlock>
        </Border>

文本仍根据封闭边框的“宽度"而不是高度进行剪裁。

我确信我可以调整边框的大小以包含文本并旋转边框,而且我可能会对我试图创建的按钮做同样的事情,但如果我这样做了,我不知道我是否会遇到与按钮边界相同的问题,所以我觉得我需要了解我遗漏了什么。为什么旋转的对象会被剪切,就像它没有旋转一样?

46qrfjad

46qrfjad1#

设定LayoutTransform属性,而不是RenderTransform:

<Border Height="100" Width="50" BorderThickness="1" BorderBrush="Black">
    <TextBlock Text="This is a test">
        <TextBlock.LayoutTransform>
            <RotateTransform Angle="90"/>
        </TextBlock.LayoutTransform>
    </TextBlock>
</Border>

如果需要,还可以在TextBlock上设置HorizontalAlignment="Center"VerticalAlignment="Center"

相关问题