c#Animation,使用TranslateTransform和DoubleAnimation

时间:2015-06-14 10:01:46

标签: c# animation

我有一个简单的地图和一个正方形,我想从A点移动到D,通过B和C.我已经宣布了一个方法Animate:

    public void Animate(double[] FirstPoint, double[] SecondPoint, Image img)
    {
        double x1 = FirstPoint[0];
        double x2 = SecondPoint[0];

        double y1 = FirstPoint[1];
        double y2 = SecondPoint[1];

        TranslateTransform trans = new TranslateTransform();
        img.RenderTransform = trans;
        DoubleAnimation anim1 = new DoubleAnimation(y1, y2, TimeSpan.FromSeconds(1));
        DoubleAnimation anim2 = new DoubleAnimation(x1, x2, TimeSpan.FromSeconds(1));
        trans.BeginAnimation(TranslateTransform.YProperty, anim1);
        trans.BeginAnimation(TranslateTransform.XProperty, anim2);
    }

主要问题是当我使用这样的方法时:

obj.Animate(obj.A, obj.B, Car);
obj.Animate(obj.B, obj.C, Car);
obj.Animate(obj.C, obj.D, Car);

...仅显示从C点到D点的动画。当我添加MessageBox.ShowAnimate方法时,它会正确显示动画。

我觉得我可能不完全理解使用这些类来动画对象的概念。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用此代码作为理解样本,以及如何使用多个动画。

这是 MainWindow.xaml.cs 的完整代码。

for ($i = 0; $i < 0xFFFFFF; ++$i) {
    echo implode(':', 
    str_split(str_pad(strtoupper(dechex($i)), 
      6, 
      '0', 
      STR_PAD_LEFT), 
    2)) . 
    '<br>';
}

此代码的结果:

enter image description here