public static void PerformTranslateIn(DependencyObject dependencyObject, TranslateAxes translateAxis, double defaultValue, double startingValue, double endingValue, double duration, double staggerDelay = 0) { // create default easing CubicEase easeIn = new CubicEase() { EasingMode = EasingMode.EaseIn }; CubicEase easeOut = new CubicEase() { EasingMode = EasingMode.EaseOut }; PerformTranslateIn(dependencyObject, translateAxis, defaultValue, startingValue, endingValue, easeIn, easeOut, duration, staggerDelay); }
public static void PerformTranslateIn(DependencyObject dependencyObject, TranslateAxes translateAxis, double defaultValue, double startingValue, double endingValue, EasingFunctionBase easingFunctionIn, EasingFunctionBase easingFunctionOut, double duration, double staggerDelay = 0) { Storyboard storyboard = null; if (null != dependencyObject) { storyboard = CreateTranslateAnimation(dependencyObject, translateAxis, defaultValue, startingValue, endingValue, easingFunctionIn, easingFunctionOut, duration, staggerDelay, false, false, new RepeatBehavior(1d)); storyboard.Begin(); } }
public static void SetTranslateAxis(UIElement element, TranslateAxes value) { element.SetValue(TranslateAxisProperty, value); }
public static void PerformPageEntranceAnimation(Page page) { if (null != page) { // stagger delay counter double staggerDelay = 0; // create default easing CubicEase easeIn = new CubicEase() { EasingMode = EasingMode.EaseIn }; CubicEase easeOut = new CubicEase() { EasingMode = EasingMode.EaseOut }; // storyboards List <Storyboard> storyboards = new List <Storyboard>(); // get all the objects to animate List <UIElement> animatables = GetAllAnimatableChildren(page.Content); // loop through them foreach (UIElement animatable in animatables) { // get the animation tag properties AnimationTypes animationType = AnimationTag.GetAnimationType(animatable); TranslateAxes translateAxis = AnimationTag.GetTranslateAxis(animatable); TranslateDirections translateDirection = AnimationTag.GetTranslateDirection(animatable); // create the animations switch (animationType) { case AnimationTypes.Background: storyboards.Add(CreateEasingAnimation(animatable, "Opacity", 0.0, 0.0, 1.0, DEFAULT_DURATION, staggerDelay, false, false, new RepeatBehavior(1d))); break; case AnimationTypes.Standard: storyboards.Add(CreateEasingAnimation(animatable, "Opacity", 0.0, 0.0, 1.0, DEFAULT_DURATION, staggerDelay, false, false, new RepeatBehavior(1d))); double startValue1 = ((TranslateDirections.FromTop == translateDirection) || (TranslateDirections.FromLeft == translateDirection)) ? -1 * DEFAULT_TRANSLATE_OFFSET : DEFAULT_TRANSLATE_OFFSET; storyboards.Add(CreateTranslateAnimation(animatable, translateAxis, startValue1, startValue1, 0, easeIn, easeOut, DEFAULT_DURATION, staggerDelay, false, false, new RepeatBehavior(1d))); break; case AnimationTypes.Hero: storyboards.Add(CreateEasingAnimation(animatable, "Opacity", 0.0, 0.0, 1.0, DEFAULT_DURATION, staggerDelay, false, false, new RepeatBehavior(1d))); double startValue2 = ((TranslateDirections.FromTop == translateDirection) || (TranslateDirections.FromLeft == translateDirection)) ? -1 * DEFAULT_TRANSLATE_HERO_OFFSET : DEFAULT_TRANSLATE_HERO_OFFSET; storyboards.Add(CreateTranslateAnimation(animatable, translateAxis, startValue2, startValue2, 0, easeIn, easeOut, DEFAULT_DURATION, staggerDelay, false, false, new RepeatBehavior(1d))); break; case AnimationTypes.Radiate: storyboards.Add(CreateEasingAnimation(animatable, "Opacity", 0.0, 0.0, 1.0, DEFAULT_DURATION * 2, staggerDelay, false, false, new RepeatBehavior(1d))); staggerDelay += DEFAULT_DURATION * 2; //storyboards.Add(CreateEasingAnimation(animatable, "Opacity", 0.5, 0.5, 1.0, // DEFAULT_DURATION * 2, staggerDelay, // false, false, new RepeatBehavior(1d))); //staggerDelay += DEFAULT_DURATION; break; case AnimationTypes.None: default: break; } // increment stagger delay staggerDelay += 2 * (DEFAULT_DURATION / 3); } // loop through the animations and start them foreach (Storyboard storyboard in storyboards) { storyboard.Begin(); } } }
public static Storyboard CreateTranslateAnimation(DependencyObject dependencyObject, TranslateAxes axis, double defaultValue, double startValue, double endValue, EasingFunctionBase easingFunctionIn, EasingFunctionBase easingFunctionOut, double duration, double staggerDelay, bool autoReverse, bool repeatForever, RepeatBehavior repeatBehavior) { if (null == dependencyObject) { return(null); } // total duration double totalDuration = duration + staggerDelay; // create the storyboard Storyboard storyboard = new Storyboard() { Duration = TimeSpan.FromMilliseconds(totalDuration), AutoReverse = autoReverse, RepeatBehavior = (repeatForever) ? RepeatBehavior.Forever : repeatBehavior }; // need a translate transform to animate TranslateTransform translateTransform = FindOrCreateTranslateTransform(dependencyObject); if (null != translateTransform) { // set the default value for the transform translateTransform.X = (TranslateAxes.Horizontal == axis) ? defaultValue : 0; translateTransform.Y = (TranslateAxes.Vertical == axis) ? defaultValue : 0; // create default easing CubicEase easeIn = new CubicEase() { EasingMode = EasingMode.EaseIn }; CubicEase easeOut = new CubicEase() { EasingMode = EasingMode.EaseOut }; string propertyName = (TranslateAxes.Horizontal == axis) ? "X" : "Y"; DoubleAnimationUsingKeyFrames daKeyFrames = CreateEasingKeyFrames(translateTransform, propertyName, defaultValue, startValue, endValue, easeIn, easeOut, duration, staggerDelay); storyboard.Children.Add(daKeyFrames); Storyboard.SetTarget(daKeyFrames, translateTransform); Storyboard.SetTargetProperty(daKeyFrames, propertyName); } return(storyboard); }