如何将一个对象从当前位置转换为另一个对象?(成功翻译)
本文关键字:一个对象 成功 翻译 位置 转换 | 更新日期: 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对象附加到情节提要。