0

基本上,我正在尝试做一些事情,即 WPF 图像位于 WPF 边框内,并定期通过更改 RotateTransform Angle 属性来旋转图像。

问题是,当我旋转图像时,边框不旋转,或者试图改变以适应图片的新形状。我尝试将它的对齐属性设置为拉伸,甚至将边框的高度/宽度绑定到图像的高度/宽度,但没有运气。我怀疑问题是,当我旋转图像时,它实际上并没有改变 Image 对象的高度或宽度,所以边框当然不知道该怎么做。

有没有更好的方法来旋转允许边框调整大小的图像,或者如果没有,我如何让边框正确调整大小,因为我正在更改 RotateTransform 角度。

谢谢!

4

2 回答 2

3

您可以为此使用 LayoutTransform 而不是 RenderTransform。如果您尝试更改旋转角度,您会看到边框会更改大小以适应它。(认为​​这就是你要问的?如果你真的想要边框旋转,那么你可以只旋转它而不是图像)

在此处输入图像描述

<Window x:Class="rotate.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Border VerticalAlignment="Center" HorizontalAlignment="Center" BorderBrush="Black" BorderThickness="1">
            <Grid Background="Blue" Width="80" Height="80">
                <Grid.LayoutTransform>
                    <RotateTransform Angle="10"/>
                </Grid.LayoutTransform>                
            </Grid>
        </Border>
    </Grid>
</Window>
于 2013-10-21T10:56:15.993 回答
1

使用LayoutTransform而不是RenderTranform.

RenderTransform仅对控件进行视觉转换,并在测量和安排控件后应用。因此它不会影响其他控件看到的大小。

LayoutTransform确实影响对象的布局。它在测量和排列控件之前应用,因此其他控件会看到大小的变化。

注意:LayoutTransform速度要慢得多,通常不会给出流畅的动画。

<Border BorderThickness="5" BorderBrush="Red" HorizontalAlignment="Center" VerticalAlignment="Center">
    <Image Width="50" Height="50">
        <Image.LayoutTransform>
            <RotateTransform Angle="45" />
        </Image.LayoutTransform>
    </Image>
</Border>

在此处输入图像描述

于 2013-10-21T10:57:25.500 回答