基本上我正在尝试做一些WPF图像在WPF边框内的东西,并定期通过更改RotateTransform Angle属性来旋转图像。
问题是,当我旋转图像时,边框不会旋转,或者尝试更改以适合图片的新形状。我已经尝试将它的Alignment属性设置为拉伸,甚至将边框的高度/宽度绑定到图像的高度/宽度,但没有运气。我怀疑问题是,当我旋转图像时,它实际上并没有改变Image对象的高度或宽度,所以当然边框不知道该怎么做。
是否有更好的方法来旋转图像以允许边框调整大小,如果没有,我如何正确调整边框大小,因为我正在更改RotateTransform角度。
谢谢!
答案 0 :(得分: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>
答案 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>