2012-05-29 91 views
0

我將XAML綁定到RotateAngle屬性,它對於一個「but」非常有用。圖像顯示裁剪。旋轉後圖像控制似乎不會刷新/調整大小。有沒有辦法強制調整圖像和scrollviewer的大小?使用變換旋轉時防止圖像裁剪

<ScrollViewer Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" VerticalScrollBarVisibility="Auto" BorderThickness="0" HorizontalScrollBarVisibility="Auto"> 
      <Image 
       VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
       Source="{Binding Input, Converter={StaticResource ByteArrayToBitmapConverter}}" 
       RenderTransformOrigin="0.5,0.5"> 
       <Image.RenderTransform> 
        <RotateTransform Angle="{Binding RotateAngle}"></RotateTransform> 
       </Image.RenderTransform> 
      </Image> 
     </ScrollViewer> 

回答

0

你可以試試:

<Image x:name="ctrl" 
       VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
       Source="{Binding Input, Converter={StaticResource ByteArrayToBitmapConverter}}" 
       RenderTransformOrigin="0.5,0.5"> 
       <Image.RenderTransform> 
        <RotateTransform Angle="{Binding DataContext.RotateAngle, ElementName=ctrl}"></RotateTransform> 
       </Image.RenderTransform> 
      </Image> 
+0

它工作在Silverlight 4 –

+0

我沒有問題的智慧結合實際旋轉。問題是 - 旋轉90度時的長方形圖像作物。您的XAML的作品完全相同 – katit

0

或者你可以使用:

<Image 
       VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
       Source="{Binding Input, Converter={StaticResource ByteArrayToBitmapConverter}}" 
       RenderTransformOrigin="0.5,0.5"> 
       <Image.RenderTransform> 
        <RotateTransform Angle="{Binding DataContext.RotateAngle, RelativeSource={RelativeSource Self}}"></RotateTransform> 
       </Image.RenderTransform> 
      </Image> 
0

假設你想擴展您的圖像縮小以適合原始圖像的空間,你可以用我的CalculateConstraintScale方法從這裏: Silverlight Rotate & Scale a bitmap image to fit within rectangle without cropping根據旋轉縮小圖像。

Click here for a working testbed app created for that answer(看起來像下面的圖片):

example app image

+0

我希望Image控件在旋轉時變成圖像的大小。這就是爲什麼我將它包裝到ScrollViewer中。 – katit

+0

@katit:你可以添加一個屏幕截圖,草圖或*東西*來闡明你想要的樣子。如果你想得到相反的結果,CalculateConstraintScale值的倒數會給你調整圖像容器大小所需的新尺寸因子。謝謝 :) –