我的代码如下
private Storyboard pathAnimationStoryboard = new Storyboard();
private MatrixAnimationUsingPath matrixAnimation = new MatrixAnimationUsingPath();
private void Begin()
{
Img_dh.RenderTransformOrigin = new Point(0.1, 0.1);
Canvas.SetLeft(Img_dh, -Img_dh.ActualWidth * Img_dh.RenderTransformOrigin.X);
Canvas.SetTop(Img_dh, -Img_dh.ActualHeight * Img_dh.RenderTransformOrigin.Y);
MatrixTransform MatrixTransform_01 = new MatrixTransform();
this.RegisterName("MatrixTransform_01", MatrixTransform_01);
Img_dh.RenderTransform = MatrixTransform_01;
Point centerPt = new Point(75, 76);
ese1.Margin = new Thickness(centerPt.X, centerPt.Y, 0, 0); //指示中心点
Canvas.SetLeft(ese1, -ese1.ActualWidth / 2);
Canvas.SetTop(ese1, -ese1.ActualHeight / 2);
PathGeometry aniPath = new PathGeometry();
EllipseGeometry egStandard = new EllipseGeometry(centerPt, 50, 50);
aniPath.AddGeometry(egStandard);
matrixAnimation.PathGeometry = aniPath; //动画的路径
matrixAnimation.Duration = TimeSpan.FromSeconds(3);
matrixAnimation.RepeatBehavior = RepeatBehavior.Forever;
matrixAnimation.DoesRotateWithTangent = true;
Storyboard.SetTargetName(matrixAnimation, "MatrixTransform_01"); //动画的对象
Storyboard.SetTargetProperty(matrixAnimation, new PropertyPath(MatrixTransform.MatrixProperty));
pathAnimationStoryboard.Children.Add(matrixAnimation);
pathAnimationStoryboard.Begin(this);
}
请问如何停止这个动画呢?求大神解答
pathAnimationStoryboard.Remove(this);
这个也不行
@JesseWong: 你在启动的时候pathAnimationStoryboard.Remove(this,true);
@cenlo:
@JesseWong: 呃。。错了。 应该是你在启动的时候pathAnimationStoryboard.Begin(this,true);复制下来忘改了
@cenlo: 依然还是不行啊
@cenlo: 我在上面设置了matrixAnimation.RepeatBehavior = RepeatBehavior.Forever;
是不是由于它的原因
@JesseWong: 那你可以把它取消试一下
@cenlo: 还是不行
@JesseWong: pathAnimationStoryboard.Begin(this);这里的this你改在动画运动的对像Img_dh,pathAnimationStoryboard.Begin(Img_dh,true);
pathAnimationStoryboard.Remove(Img_dh);
@cenlo: 还是不行
@JesseWong: 呃。。这个我已经试过了,是可以的呀
@cenlo: 好了,谢谢你
@cenlo: 可是图片不见了啊
@JesseWong: 呃。。。。这个你移出动画后重新设置图片呢
@cenlo: 如何获取动画停止后Img_dh的 Canvas.Left和Canvas.Top的值呢
z知道begin怎么就不知道stop呢?
Stop不行啊
播放完了就停止了。
matrixAnimation.RepeatBehavior = RepeatBehavior.Forever;这里设置的循环播放
你设置的永久循环播放怎么停啊 matrixAnimation.RepeatBehavior = RepeatBehavior.Forever; 里面有一个是播放一次就停止的
还有个办法是用其他动画替代现有动画,设置一个0秒的现有新动画,用ApplyAnimationClock替换原有动画