2016-03-13 22 views
1

我想用移動動畫將汽車移動到0,0點,但問題是出現錯誤,我使用此功能 - https://gyazo.com/1f47e18f955c12dc1907fcf4d7b19d6a。應用外觀: https://gyazo.com/10fb071534809229cb98955f9fb86231。 有我的代碼(我發現在一篇文章中WPF. Easiest way to move Image to (X,Y) programmatically?此功能):以WPF格式顯示圖片的雙動畫

public void Eiti(Image target, double newX, double newY) 
    { 
     var top = Canvas.GetTop(target); 
     var left = Canvas.GetLeft(target); 
     TranslateTransform trans = new TranslateTransform(); 
     target.RenderTransform = trans; 
     DoubleAnimation anim1 = new DoubleAnimation(top, newY - top, TimeSpan.FromSeconds(10)); 
     DoubleAnimation anim2 = new DoubleAnimation(left, newX - left, TimeSpan.FromSeconds(10)); 
     trans.BeginAnimation(TranslateTransform.XProperty, anim1); 
     trans.BeginAnimation(TranslateTransform.YProperty, anim2); 
    } 

和XAML:

<DockPanel Grid.Row="1" Background="#FF695887"> 
     <Canvas> 
      <Image Name="car1" /> 
     </Canvas> 
    </DockPanel> 

如何解決呢?

回答

0
public void Eiti(Image target, double newX, double newY) 
    { 
     var top = Canvas.GetTop(target); 
     var left = Canvas.GetLeft(target); 
     top = Double.IsNaN(top) ? 0 : top; 
     left = Double.IsNaN(left) ? 0 : left; 

     var storyboard = new Storyboard(); 

     DoubleAnimation anim1 = new DoubleAnimation(top, newY, TimeSpan.FromSeconds(10)); 
     Storyboard.SetTarget(anim1, target); 
     Storyboard.SetTargetProperty(anim1, new PropertyPath(Canvas.TopProperty)); 
     storyboard.Children.Add(anim1); 

     DoubleAnimation anim2 = new DoubleAnimation(left, newX, TimeSpan.FromSeconds(10)); 
     Storyboard.SetTarget(anim2, target); 
     Storyboard.SetTargetProperty(anim2, new PropertyPath(Canvas.LeftProperty)); 
     storyboard.Children.Add(anim2); 

     storyboard.Begin(); 
    } 
+0

它工作。謝謝:) –

+0

但是如何控制它呢?它從錯誤的地點開始。 –

+0

它應該根據指定的屬性Canvas.Top,Image中的Canvas.Left從圖像的初始位置開始。 我查過了,它按預期工作。 –