2014-05-16 56 views
0

我正在画布上创建动态图像。 T想要翻译它们并按下按钮来旋转它们。翻译工作正常,但是当我旋转它它给人错误这样 其他信息: 无法转换 型“Windows.UI.Xaml.Media.TranslateTransform” 的对象键入 “Windows.UI.Xaml.Media.RotateTransform ”。 这是我的代码xaml for windows 8的转换

图片i = new Image(); //选择

private void btn_Click(object sender, RoutedEventArgs e) // For creating images 
     { 
      int i = 0; 

      Image image = new Image(); 
      string url = "ms-appx:///Assets/1.png"; 
      BitmapImage bm = new BitmapImage(); 

      bm.UriSource = new Uri(url, UriKind.Absolute); 
      image.Source = bm; 
      image.Height = Double.NaN; 
      image.Width = Double.NaN; 
      image.ManipulationMode = ManipulationModes.TranslateX | ManipulationModes.TranslateY | ManipulationModes.Rotate; 
      image.RenderTransform = new TranslateTransform(); 
      image.Name = "img" + i; 
      image.Tapped += select; 
      image.ManipulationDelta += DragableItem_ManipulationDelta; 
      DrawCanvas.Children.Add(image); 

      i++; 
     } 

private void select(object sender, TappedRoutedEventArgs e) // selecting of image 
     { 
      i = (Image)sender; 
     } 



private void rotate_Click(object sender, RoutedEventArgs e)  //rotating 
     { 
      if (i != null) 
      { 

       var translate = (RotateTransform)i.RenderTransform; 
       translate.CenterY = 0; 
       translate.CenterX = 0; 
       translate.Angle = 45; 
       i.RenderTransform = translate; 
      } 
     } 



    void DragableItem_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e) // translating code 
      { 
       var name = (Image)sender; 

       var translate = (TranslateTransform)name.RenderTransform; 
       translate.X += e.Delta.Translation.X; 
    translate.Y += e.Delta.Translation.Y; 
} 



need help stuck here for a long time ?? 
+0

顺便说一句,堆栈溢出17个问题,你应该真正注册一个帐户,并接受至少一些你的答案。 –

回答

1

你设置你的RenderTransformTranslateTransform,然后试图将其转换为RotateTransform(因为错误状态),全局变量。您应该使用CompositeTransform,或者使用TransformGroup以及其中的两种转换类型。

+0

如何编辑我的代码? – user3090763

+0

将'image.RenderTransform = new TranslateTransform();'转换为'image.RenderTransform = new CompositeTransform();',然后用'(CompositeTransform)'替换'(TranslateTransform)'和'(RotateTransform)'。然后用'TranslateX/TranslateY'替换'Rotate'和'X/Y'属性的'Angle'属性,因为这些是'CompositeTransform'类的'RotateTransform'和'TranslateTransform'属性的相应类似物。 –