2012-12-19 66 views
2

在Windows Phone 7應用程序中,我想在用戶單擊按鈕時將90º旋轉應用於圖像。我做的是以下情況:WP7內部的圖像旋轉ScrollViewer

<Image Height="369" Name="imageView" Stretch="Uniform" Width="394"> 
    <Image.RenderTransform> 
     <RotateTransform Angle="0" /> 
    </Image.RenderTransform> 
</Image> 

在功能:

((RotateTransform)imageView.RenderTransform).Angle += 90; 

到目前爲止,一切都很好。當我將圖像放置在滾動查看器中時出現問題。

<ScrollViewer ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible" Height="389" HorizontalAlignment="Left" Margin="12,78,0,0" Name="scrollViewer" VerticalAlignment="Top" Width="409"> 
    <Image Height="369" Name="imageView" Stretch="Uniform" Width="394"> 
     <Image.RenderTransform> 
     <RotateTransform Angle="0" /> 
     </Image.RenderTransform> 
    </Image> 
</ScrollViewer> 

在這種情況下,我得到一個錯誤 - InvalidCastException的是未處理的 - 在這行代碼:

((RotateTransform)imageView.RenderTransform).Angle += 90; 

回答

1

的問題是,imageView.RenderTransform不是RotateTransform然後,但CompositeTransform代替,那麼試試這個來代替:

((CompositeTransform)imageView.RenderTransform).Rotation += 90; 

如果你想將其指定爲一個複合體,XAML直接轉換也一樣,你可以這樣做:

<ScrollViewer ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible" Height="389" HorizontalAlignment="Left" Margin="12,78,0,0" Name="scrollViewer" VerticalAlignment="Top" Width="409"> 
    <StackPanel> 
     <Image Height="369" Name="imageView" Stretch="Uniform" Width="394" Source="/PhoneApp2;component/Images/lumia-920-rainbow.png"> 
      <Image.RenderTransform> 
       <CompositeTransform Rotation="0" CenterX="197" CenterY="184" /> 
      </Image.RenderTransform> 
     </Image> 
    <StackPanel> 
</ScrollViewer> 
+0

它工作正常!現在的問題是,當我滾動圖像消失..謝謝 – notGeek

+0

哦,我沒有看到,但如果你把圖像放在一個StackPanel裏面,它似乎工作正常,看到更新的答案。我也把變形的中心移到中間,否則圖像有時會出現在可見區域之外。希望解決您的問題。 –