好像应该这么简单。我已经阅读了几十个链接,我无法获得任何动画这个位置的动画。我相信到目前为止我能写的最接近的代码是:
Storyboard storyboard = new Storyboard();
TranslateTransform trans = new TranslateTransform() { X = 1.0, Y = 1.0 };
myCheckbox.RenderTransformOrigin = new Point(0.5, 0.5);
myCheckbox.RenderTransform = trans;
DoubleAnimation moveAnim = new DoubleAnimation();
moveAnim.Duration = TimeSpan.FromMilliseconds(1200);
moveAnim.From = -1;
moveAnim.To = 1;
Storyboard.SetTarget(moveAnim, myCheckbox);
Storyboard.SetTargetProperty(moveAnim, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)"));
storyboard.Completed += new System.EventHandler(storyboard_Completed);
storyboard.Children.Add(moveAnim);
storyboard.Begin();
不会抛出任何错误。 调用完成回调。 如果我以类似的方式设置不透明度,它可以正常工作。
如何使用代码简单地为UIElement的位置设置动画?
答案 0 :(得分:3)
xyzzer的评论是正确的。造成混淆的原因是因为RenderTransformOrigin
的坐标使用(0,1)相对于元素。实际变换(例如TranslateTransform
)使用像素作为单位。