2013-10-21 139 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