2014-05-16 59 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'屬性的相應類似物。 –