围绕旋转图像边框

时间:2013-10-21 10:50:55

标签: c# wpf

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:3)

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

enter image description here

<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>

答案 1 :(得分: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>

enter image description here