如何将对象从当前位置转换为另一个位置? (成功翻译)

时间:2012-01-19 14:14:38

标签: c# wpf animation storyboard

我设法开发了一个故事板来将一个对象从其初始位置转换到另一个位置,但是当我第二次触发故事板或者调用另一个故事板时,该对象总是从其初始位置转换而不是从新位置转换在第一次翻译后建立。如何改变?

我的代码:

 TranslateTransform animatedTranslateTransform = new TranslateTransform();
 this.RegisterName("slide", animatedTranslateTransform);
 TransformGroup transformGroup = new TransformGroup();
 transformGroup.Children.Add(animatedTranslateTransform);
 _button.RenderTransform = transformGroup;

 //translate Y
 DoubleAnimation slideDown = new DoubleAnimation(20, TimeSpan.FromSeconds(1.0));
 Storyboard.SetTargetName(slideDown, "slide");
 Storyboard.SetTargetProperty(slideDown, new PropertyPath(TranslateTransform.YProperty));
 storyBoardSlideDown.Children.Add(slideDown);

2 个答案:

答案 0 :(得分:2)

使用DoubleAnimation.By代替DoubleAnimation.To。来自MSDN:

  

动画从属性的基础值开始   动画或前一个动画的输出值为其总和   值和By属性

指定的值

DoubleAnimation slideDown =
    new DoubleAnimation { By = 20, Duration = TimeSpan.FromSeconds(1.0) };

答案 1 :(得分:0)

您需要将动画的FillBehavior(例如DoubleAnimation)设置为HoldEnd:

da.FillBehavior = FillBehavior.HoldEnd;

然后将da.From属性设置为Canvas或Element对象的Top或Left。

如果您的对象可以垂直和水平移动,则需要在故事板上附加两个DoubleAnimation对象。