public override CompositionAnimation BuildCompositionAnimation() { if (CompositionAnimation != null) { return(CompositionAnimation); } if (TargetElement == null) { throw new InvalidOperationException("没有为动画提供目标对象。"); } if (TargetProperty == VisualProperty.None) { throw new InvalidOperationException("没有为动画提供目标属性。"); } CompositionAnimation?.Dispose(); CompositionAnimation = TargetVisual.Compositor.CreateExpressionAnimation(Expression); foreach (var parameter in Parameters) { parameter.AddParameterToAnimation(CompositionAnimation); } return(CompositionAnimation); }
public virtual void Dispose() { if (TargetProperty != VisualProperty.None) { TargetVisual?.StopAnimation(TargetProperty.ToString()); } CompositionAnimation?.Dispose(); CompositionAnimation = null; }
public override CompositionAnimation BuildCompositionAnimation() { if (CompositionAnimation != null) { return(CompositionAnimation); } if (TargetElement == null) { throw new InvalidOperationException("没有为动画提供目标对象。"); } if (TargetProperty == VisualProperty.None) { throw new InvalidOperationException("没有为动画提供目标属性。"); } CompositionAnimation?.Dispose(); var resultAnimation = CreateCompositionAnimation(TargetVisual.Compositor); CompositionAnimation = resultAnimation; resultAnimation.DelayTime = DelayTime; resultAnimation.Duration = Duration; resultAnimation.IterationBehavior = IterationBehavior; resultAnimation.IterationCount = IterationCount; resultAnimation.StopBehavior = StopBehavior; foreach (var parameter in Parameters) { parameter.AddParameterToAnimation(resultAnimation); } foreach (var keyFrame in KeyFrames) { keyFrame.AddKayFrameToAnimation(resultAnimation); } return(CompositionAnimation); }
internal void Stop() { _animation?.StopAnimation(TargetProperty); _animation?.Dispose(); _animation = null; }