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);
        }
Beispiel #4
0
 internal void Stop()
 {
     _animation?.StopAnimation(TargetProperty);
     _animation?.Dispose();
     _animation = null;
 }