如何在C#中使用Path与Storyboard进行动画制作

时间:2017-12-04 06:52:48

标签: c# storyboard

所以,我试图将这个矩形框移动到这样的网格上 -

enter image description here

为此,我正在使用故事板。

我正在使用DoubleAnimation在我的一个类中移动X轴和Y轴上的框。我从MainWindow类调用这个类。但是,对于每个盒子,每转一圈,我都必须创建一个新的双动画,分配偏移值,开始时间,持续时间等,如下所示 -

        //Code to move Boxes 1-4 to first grid point in their path
        TranslateTransform moveTransform = new TranslateTransform();
        moveTransform.X = 0;
        moveTransform.Y = 0;
        x.RenderTransform = moveTransform;


        Storyboard s = new Storyboard();


        DoubleAnimation Move1= new DoubleAnimation();

        Move1.From = 0;
        Move1.To = xPosition; // calculate correct offset here
        Move1.Duration = new Duration(TimeSpan.FromSeconds(hops));
        if (x==Box2)
        {
            Move1.BeginTime = TimeSpan.FromSeconds(5);//For Box 2, the first move will be across Y-Axis and hence X-Axis move will be delayed by 5 seconds.
        }
        else
        {
            Move1.BeginTime = TimeSpan.Zero;
        }

        Storyboard.SetTarget(Move1, x);
        Storyboard.SetTargetProperty(Move1, new PropertyPath("(UIElement.RenderTransform).(X)"));
        s.Children.Add(Move1);

我知道有一种方法可以定义从源到达目的地的路径,但我不知道该怎么办?另外,我不确定我在这里做的是最佳方式。

所以,我的问题是 -

更好的方法是什么?我们如何定义动画路径?

我是C#的新手所以请不要介意这听起来有点傻。

谢谢!

1 个答案:

答案 0 :(得分:0)

我能够在不使用路径的情况下完成。

对于每一个动作,我都创建了一个新的双动画。

所以对于左 - 右 - 右移动,我用

创建了3个双动画

X轴,Y轴和X轴再次。