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

本文关键字:一个对象 成功 翻译 位置 转换 | 更新日期: 2023-09-27 18:20:42

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

我的代码:

 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);

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

使用DoubleAnimation.By而不是DoubleAnimation.To。从MSDN:

动画从属性的基本值开始动画或上一个动画的输出值的总和值和by属性指定的值

写入

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

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

da.FillBehavior = FillBehavior.HoldEnd;

然后将da.From属性设置为Canvas或Element对象的顶部或左侧。

如果对象可以垂直和水平移动,则需要将两个DoubleAnimation对象附加到情节提要。