2013-10-21 141 views
0

基本上我正在尝试通过WPF图像在WPF边框内进行操作,并定期通过更改RotateTransform Angle属性来旋转图像。围绕旋转图像的边框

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

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

谢谢!

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

哇,比我想象的要简单多了!谢谢! – Miguel

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

+2

有趣的一系列编辑贴上了'安迪'上面的答案。 – ReiMasuro