2

在 Windows Phone 7 应用程序中,我想在用户单击按钮时对图像应用 90º 旋转。我正在执行以下操作:

<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;
4

1 回答 1

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>
于 2012-12-19T17:57:19.933 回答