In an Windows Phone 7 application, I want to apply a 90ยบ rotation to an image when the user clicks a button. I'm doing the following:
<Image Height="369" Name="imageView" Stretch="Uniform" Width="394"> <Image.RenderTransform> <RotateTransform Angle="0" /> </Image.RenderTransform> </Image> At the function:
((RotateTransform)imageView.RenderTransform).Angle += 90; So far, so good. The problem appears when I place the image within a scrollviewer.
<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> In this case I get an error - InvalidCastException was unhandled - on this line of code:
((RotateTransform)imageView.RenderTransform).Angle += 90; Answer: 1
The problem is that imageView.RenderTransform is not a RotateTransform then, but of CompositeTransform instead, so try this instead:
((CompositeTransform)imageView.RenderTransform).Rotation += 90; And if you want to specify it as a Composite transform directly in the XAML too, you can do that:
<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> by : Johan Falkhttp://stackoverflow.com/users/1330240
No comments:
Post a Comment
Send us your comment related to the topic mentioned on the blog