예제 #1
0
        /// <summary>
        /// Bounces the specified element.
        /// </summary>
        /// <param name="element">The element.</param>
        /// <param name="direction">The direction.</param>
        /// <param name="whenDone">The when done.</param>
        public static void Bounce(UIElement element, Direction direction, EventHandler whenDone = null)
        {
            var translateTransform = new TranslateTransform();
            element.RenderTransform = translateTransform;
            switch (direction)
            {
                case Direction.Up:
                    translateTransform.BeginAnimation(
                        TranslateTransform.YProperty,
                        CreateDoubleAnimation(
                        0,
                        -15,
                        0.2,
                        (o, e) => translateTransform.BeginAnimation(TranslateTransform.YProperty, CreateDoubleAnimationWithEasing(-15, 0, 0.8, new BounceEase { Bounces = 3, EasingMode = EasingMode.EaseOut })),
                        whenDone));
                    break;

                case Direction.Down:
                    translateTransform.BeginAnimation(
                        TranslateTransform.YProperty,
                        CreateDoubleAnimation(
                        0,
                        15,
                        0.2,
                        (o, e) => translateTransform.BeginAnimation(TranslateTransform.YProperty, CreateDoubleAnimationWithEasing(15, 0, 0.8, new BounceEase { Bounces = 3, EasingMode = EasingMode.EaseOut })),
                        whenDone));
                    break;
            }
        }
예제 #2
0
        public static void MoveWithRotationAndFadeOut(FrameworkElement element, Point to, double rotationAngle, double seconds, AnimationCompletedDelegate callback)
        {
            TransformGroup transformGroup = new TransformGroup();
            transformGroup.Children.Add(new RotateTransform(rotationAngle, element.Width / 2, element.Height / 2));

            Duration duration = new Duration(TimeSpan.FromSeconds(seconds));
            DoubleAnimation animationX = new DoubleAnimation(to.X, duration);
            DoubleAnimation animationY = new DoubleAnimation(to.Y, duration);
            DoubleAnimation fadeOutAnimation = new DoubleAnimation
            {
                From = 1,
                To = 0.4,
                Duration = duration,
                FillBehavior = FillBehavior.Stop
            };

            animationX.Completed += (sender, _) => callback(sender, _);

            TranslateTransform trans = new TranslateTransform();
            element.RenderTransform = transformGroup;

            trans.BeginAnimation(TranslateTransform.XProperty, animationX);
            trans.BeginAnimation(TranslateTransform.YProperty, animationY);

            element.Opacity = 0.4;
            element.BeginAnimation(UIElement.OpacityProperty, fadeOutAnimation);
            transformGroup.Children.Add(trans);
        }
예제 #3
0
 private void ExpandMenu(Ellipse item, int distance)
 {
     DoubleAnimation animation = new DoubleAnimation(0, distance, TimeSpan.FromSeconds(.5));
     TranslateTransform move = new TranslateTransform();
     item.RenderTransform = move;
     move.BeginAnimation(TranslateTransform.XProperty, animation);
     move.BeginAnimation(TranslateTransform.YProperty, animation);
 }
예제 #4
0
        private void AnimateLayout()
        {
            var startDelay = new TimeSpan();

            foreach (UIElement child in Children)
            {
                Point arrangePosition;
                Transform currentTransform = GetCurrentLayoutInfo(child, out arrangePosition);

                bool bypassTransform = _isAnimationValid != (int) GetValue(IsAnimationValidProperty);

                // If we had previously stored an arrange position, see if it has moved
                if (child.ReadLocalValue(SavedArrangePositionProperty) != DependencyProperty.UnsetValue)
                {
                    var savedArrangePosition = (Point) child.GetValue(SavedArrangePositionProperty);

                    // If the arrange position hasn't changed, then we've already set up animations, etc
                    // and don't need to do anything
                    if (!AreClose(savedArrangePosition, arrangePosition))
                    {
                        // If we apply the current transform to the saved arrange position, we'll see where
                        // it was last rendered
                        Point lastRenderPosition = currentTransform.Transform(savedArrangePosition);
                        if (bypassTransform)
                            lastRenderPosition = (Point) child.GetValue(SavedCurrentPositionProperty);
                        else
                            child.SetValue(SavedCurrentPositionProperty, lastRenderPosition);

                        // Transform the child from the new location back to the old position
                        var newTransform = new TranslateTransform();
                        SetLayout2LayoutTransform(child, newTransform);

                        // Decay the transformation with an animation
                        double startValue = lastRenderPosition.X - arrangePosition.X;
                        newTransform.BeginAnimation(TranslateTransform.XProperty,
                                                    MakeStaticAnimation(startValue, startDelay));
                        newTransform.BeginAnimation(TranslateTransform.XProperty, MakeAnimation(startValue, startDelay),
                                                    HandoffBehavior.Compose);
                        startValue = lastRenderPosition.Y - arrangePosition.Y;
                        newTransform.BeginAnimation(TranslateTransform.YProperty,
                                                    MakeStaticAnimation(startValue, startDelay));
                        newTransform.BeginAnimation(TranslateTransform.YProperty, MakeAnimation(startValue, startDelay),
                                                    HandoffBehavior.Compose);

                        // Next element starts to move a little later
                        startDelay = startDelay.Add(CascadingDelay);
                    }
                }

                // Save off the previous arrange position				
                child.SetValue(SavedArrangePositionProperty, arrangePosition);
            }
            // currently WPF doesn't allow me to read a value right after the call to BeginAnimation
            // this code enables me to trick it and know whether I can trust the current position or not.
            _isAnimationValid = (int) GetValue(IsAnimationValidProperty) + 1;
            BeginAnimation(IsAnimationValidProperty,
                           new Int32Animation(_isAnimationValid, _isAnimationValid, new Duration(), FillBehavior.HoldEnd));
        }
 /// <summary>
 /// Funkcja do animacji kropli wody
 /// </summary>
 /// <param name="target">Tutaj podajemy obiekt, który chcemy animować - w tym przypadku przesuwać wzdłuż osi X i Y</param>
 /// <param name="animacjaDo">Iterator węzła od którego zaczynamy animacje</param>
 /// <param name="animacjaOd">Iterator węzła do którego idzie animacja</param>
 private void AnimacjaRuchu(Image target, int animacjaDo,int animacjaOd)
 {
     double newX = wezel[animacjaDo].X - wezel[animacjaOd].X;
     double newY = wezel[animacjaDo].Y - wezel[animacjaOd].Y;
     TranslateTransform trans = new TranslateTransform();
     target.RenderTransform = trans;
     DoubleAnimation anim1 = new DoubleAnimation(newX, TimeSpan.FromSeconds(2));
     DoubleAnimation anim2 = new DoubleAnimation(newY, TimeSpan.FromSeconds(2));
     trans.BeginAnimation(TranslateTransform.XProperty, anim1);
     trans.BeginAnimation(TranslateTransform.YProperty, anim2);
 }
예제 #6
0
파일: Helper.cs 프로젝트: n0nick/pewpew
 public static void MoveTo(this Image target, double newX, double newY)
 {
     Vector offset = VisualTreeHelper.GetOffset(target);
     var top = offset.Y;
     var left = offset.X;
     TranslateTransform trans = new TranslateTransform();
     target.RenderTransform = trans;
     DoubleAnimation anim1 = new DoubleAnimation(0, newY - top, TimeSpan.FromSeconds(10));
     DoubleAnimation anim2 = new DoubleAnimation(0, newX - left, TimeSpan.FromSeconds(10));
     trans.BeginAnimation(TranslateTransform.YProperty, anim1);
     trans.BeginAnimation(TranslateTransform.XProperty, anim2);
 }
        /// <summary>
        /// Called when panel's layout is updated
        /// </summary>
        /// <remarks>
        /// Note: This is actually called when any layouts are updated
        /// </remarks>
        private void PanelLayoutUpdated(object sender, EventArgs e)
        {
            // At this point, the panel has moved the children to the new locations, but hasn't
            // been rendered
            foreach (UIElement child in _panel.Children)
            {
                // Figure out where child actually is right now. This is a combination of where the
                // panel put it and any render transform currently applied
                Point currentPosition = child.TransformToAncestor(_panel).Transform(new Point());

                // See what transform is being applied
                Transform currentTransform = child.RenderTransform;

                // Compute where the panel actually arranged it to
                Point arrangePosition = currentPosition;
                if (currentTransform != null)
                {
                    // Undo any transform we applied
                    arrangePosition = currentTransform.Inverse.Transform(arrangePosition);
                }

                // If we had previously stored an arrange position, see if it has moved
                if (child.ReadLocalValue(SavedArrangePositionProperty) != DependencyProperty.UnsetValue)
                {
                    Point savedArrangePosition = (Point)child.GetValue(SavedArrangePositionProperty);

                    // If the arrange position hasn't changed, then we've already set up animations, etc
                    // and don't need to do anything
                    if (!AreReallyClose(savedArrangePosition, arrangePosition))
                    {
                        // If we apply the current transform to the saved arrange position, we'll see where
                        // it was last rendered
                        Point lastRenderPosition = currentTransform.Transform(savedArrangePosition);

                        // Transform the child from the new location back to the old position
                        TranslateTransform newTransform = new TranslateTransform();
                        child.RenderTransform = newTransform;

                        // Decay the transformation with an animation
                        newTransform.BeginAnimation(TranslateTransform.XProperty, MakeAnimation(lastRenderPosition.X - arrangePosition.X));
                        newTransform.BeginAnimation(TranslateTransform.YProperty, MakeAnimation(lastRenderPosition.Y - arrangePosition.Y));
                    }
                }

                // Save off the previous arrange position
                child.SetValue(SavedArrangePositionProperty, arrangePosition);
            }
        }
        public void LoadClick(object sender, EventArgs e)
        {
            //MarkAllUiElementsWithTags(); //to delete it later

            var but = sender as Button;
            var move = new TranslateTransform(0, 0);
            var anim = new DoubleAnimation()
            {
                Duration = new Duration(TimeSpan.FromSeconds(0.7)),
                To = but.Margin.Left + Load.Width + 5,
                AccelerationRatio = 0.5,
            };
            anim.Completed += MoveToLoad;
            but.RenderTransform = move;
            move.BeginAnimation(TranslateTransform.XProperty, anim);

            var moveOther = new TranslateTransform(0, 0);
            var animOther = new DoubleAnimation()
            {
                Duration = new Duration(TimeSpan.FromSeconds(0.5)),
                To = -Create.Width - 5,
                AccelerationRatio = 0.5,
            };
            Create.RenderTransform = moveOther;
            moveOther.BeginAnimation(TranslateTransform.XProperty, animOther);
        }
예제 #9
0
 public static void MoveCharacterPan(TranslateTransform transform, DependencyProperty propertyToPan, Double toValue)
 {
     if (transform != null)
     {
         UiThread.Execute(() =>
             transform.BeginAnimation(propertyToPan, GetMoveCharacterPanAnimation(toValue), HandoffBehavior.SnapshotAndReplace));
     }
 }
예제 #10
0
        protected internal override void BeginTransition(TransitionPresenter transitionElement, ContentPresenter oldContent, ContentPresenter newContent)
        {
            TranslateTransform tt = new TranslateTransform(StartPoint.X * transitionElement.ActualWidth, StartPoint.Y * transitionElement.ActualHeight);

              if (IsNewContentTopmost)
            newContent.RenderTransform = tt;
              else
            oldContent.RenderTransform = tt;

              DoubleAnimation da = new DoubleAnimation(EndPoint.X * transitionElement.ActualWidth, Duration);
              tt.BeginAnimation(TranslateTransform.XProperty, da);

              da.To = EndPoint.Y * transitionElement.ActualHeight;
              da.Completed += delegate {
            EndTransition(transitionElement, oldContent, newContent);
              };
              tt.BeginAnimation(TranslateTransform.YProperty, da);
        }
		void ConfirmationLocalModalInteractionDialog_Loaded(object sender, RoutedEventArgs e)
		{
			DoubleAnimation doubleAnim = new DoubleAnimation(-460, 0,
				new Duration(new TimeSpan(0, 0, 0, 0, 200)));

			var trans = new TranslateTransform();
			this.RenderTransform = trans;

			trans.BeginAnimation(TranslateTransform.XProperty, doubleAnim);
		}
예제 #12
0
 private void decreaseDigit(TranslateTransform tf, TimeSpan time)
 {
     
     
     double newPos = tf.Y;
     newPos = newPos + resolutionPerNumber;
     DoubleAnimation animationTB1 = new DoubleAnimation(newPos, time);
     tf.BeginAnimation(TranslateTransform.YProperty, animationTB1);
    
 }
        public void Grow()
        {
            BringIntoView();
            const int mult = 10;
            const double duration = 0.1;
            RenderTransform = new TranslateTransform();
            var translateAnimation = new DoubleAnimation { From = 0, To = (-Width * mult / 2), Duration = TimeSpan.FromSeconds(duration), AutoReverse = true };
            RenderTransform.BeginAnimation(TranslateTransform.XProperty, translateAnimation);
            RenderTransform.BeginAnimation(TranslateTransform.YProperty, translateAnimation);
            Ellipse.RenderTransform = new ScaleTransform();
            var scaleAnimation = new DoubleAnimation { From = 1, To = mult, Duration = TimeSpan.FromSeconds(duration), AutoReverse = true };
            Ellipse.RenderTransform.BeginAnimation(ScaleTransform.ScaleXProperty, scaleAnimation);
            Ellipse.RenderTransform.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnimation);

            //(RadialGradientBrush)FindResource("RedGradient")
            //var colorTransform = new ColorAnimation {To = Colors.Red, Duration=TimeSpan.FromSeconds(0.1), AutoReverse= true};
            //var brush = (RadialGradientBrush)FindResource("RedGradient");
            //brush.BeginAnimation();
        }
        /// <summary>
        /// Starts the animation for the new content
        /// </summary>
        private void BeginAnimateContentReplacement()
        {
            var newContentTransform = new TranslateTransform();
            var oldContentTransform = new TranslateTransform();
            m_paintArea.RenderTransform = oldContentTransform;
            m_mainContent.RenderTransform = newContentTransform;
            m_paintArea.Visibility = Visibility.Visible;

            newContentTransform.BeginAnimation(TranslateTransform.XProperty, CreateAnimation(this.ActualWidth, 0));
            oldContentTransform.BeginAnimation(TranslateTransform.XProperty, CreateAnimation(0, -this.ActualWidth, (s, e) => m_paintArea.Visibility = Visibility.Hidden));
        }
예제 #15
0
        private void AnimateFirstBull()
        {
            DoubleAnimation translate = new DoubleAnimation();
            translate.From = 0;
            translate.To = 110;
            translate.AutoReverse = false;
            translate.Duration = new Duration(TimeSpan.FromSeconds(1.300));

            TranslateTransform tt = new TranslateTransform();
            bull.RenderTransform = tt;
            tt.BeginAnimation(TranslateTransform.YProperty, translate);
        }
예제 #16
0
        private void AnimateFrostGiant(object sender, EventArgs e)
        {
            TranslateTransform translate = new TranslateTransform();
            DoubleAnimation animate;
            FrostGiant.RenderTransform = translate;

            animate = new DoubleAnimation(0, -800, TimeSpan.FromSeconds(bigmove));

            animate.Completed += new EventHandler(AnimateVikingDragon0);

            translate.BeginAnimation(TranslateTransform.XProperty, animate);
        }
예제 #17
0
        private void AnimateCheckButton()
        {
            DoubleAnimation translate = new DoubleAnimation();
            translate.From = 0;
            translate.To = 68;
            translate.AutoReverse = false;
            translate.Duration = new Duration(TimeSpan.FromSeconds(0.750));

            TranslateTransform tt = new TranslateTransform();
            checkButton.RenderTransform = tt;
            tt.BeginAnimation(TranslateTransform.YProperty, translate);
        }
        public SurfaceWindow1()
        {
            InitializeComponent();
            // Add handlers for window availability events
            AddWindowAvailabilityHandlers();
            this.SizeChanged += new SizeChangedEventHandler(SurfaceWindow1_SizeChanged);
            this.SizeChanged += Map.WindowSizeChanged;
            this.SizeChanged += nav.WindowSizeChanged;
            this.MouseUp += new MouseButtonEventHandler(MouseUp_Handler);

            _startCard = new StartCard();
            _startCard.HorizontalAlignment = HorizontalAlignment.Center;
            _startCard.VerticalAlignment = VerticalAlignment.Center;
            startCan.Children.Add(_startCard);

            panImg.Source = new BitmapImage(new Uri(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\Data\\Startup\\panning_startup.bmp", UriKind.Absolute));

            panImg.Width = 3598;
            panImg.Height = 1080;
            DoubleAnimation myAnimation = new DoubleAnimation();
            myAnimation.From = 0;
            myAnimation.To = -1080;
            myAnimation.AutoReverse = true;
            myAnimation.RepeatBehavior = RepeatBehavior.Forever;
            myAnimation.Duration = new Duration(TimeSpan.FromSeconds(45));
            TranslateTransform t = new TranslateTransform();
            panImg.HorizontalAlignment = HorizontalAlignment.Right;
            panImg.Opacity = 0.2;
            panCan.RenderTransform = t;
            t.BeginAnimation(TranslateTransform.XProperty, myAnimation);
            nav.HandleImageSelected += Map.HandleImageSelectedEvent;
            filter = new FilterTimelineBox();
            nav.filter = filter;

            map.Children.Add(filter);

            this.SizeChanged += SurfaceWindow1_SizeChanged;

            _resetTimer.Interval = TimeSpan.FromSeconds(120);
            //_resetTimer.Tick += new EventHandler(_resetTimer_Tick);

            //help.Visibility = Visibility.Visible;

            String[] c = Environment.GetCommandLineArgs();

            if (c.Length != 1)
            {
                if (c[1].Contains("noauthoring"))
                {
                    ButtonPanel.Children.Remove(exitButton);
                }
            }
        }
        public void AnimateViewToY(double y)
        {
            var currentPosition = RenderTransform.Transform(new Point(0.0, 0.0));
            var animation = new DoubleAnimation();
            animation.From = currentPosition.Y;
            animation.To = y;
            animation.Duration = new Duration(TimeSpan.FromMilliseconds(m_stateChangeAnimationTimeMilliseconds));
            animation.EasingFunction = new SineEase();

            var transform = new TranslateTransform(currentPosition.X, currentPosition.Y);
            RenderTransform = transform;
            transform.BeginAnimation(TranslateTransform.YProperty, animation);
        }
예제 #20
0
        private void AnimateFrsotGiantDragon0(object sender, EventArgs e)
        {
            TranslateTransform translate = new TranslateTransform();
            DoubleAnimation animate;
            translate = new TranslateTransform();
            FrostGiantDragonPup0.RenderTransform = translate;

            animate = new DoubleAnimation(0, -DragDistance, TimeSpan.FromSeconds(Dragmove));

            animate.Completed += new EventHandler(AnimateVikingDragon1);

            translate.BeginAnimation(TranslateTransform.XProperty, animate);
        }
예제 #21
0
        public CrawlTextBox()
        {
            this.InitializeComponent();
            crawlLabel.UpdateLayout();
            TranslateTransform offsetTransform = new TranslateTransform();

            DoubleAnimation offsetXAnimation = new DoubleAnimation(1920, -(crawlLabel.ActualWidth), new Duration(TimeSpan.FromSeconds(30*(crawlLabel.ActualWidth/5000))));
            offsetXAnimation.RepeatBehavior = RepeatBehavior.Forever;
            offsetXAnimation.BeginTime = TimeSpan.FromSeconds(0);
            offsetTransform.BeginAnimation(TranslateTransform.XProperty, offsetXAnimation);

            crawlLabel.RenderTransform = offsetTransform;
        }
예제 #22
0
        private void Recompute()
        {
            double x1, y1, x2, y2;
            x1 = _original.X;
            y1 = _original.Y;
            x2 = _dest.X;
            y2 = _dest.Y;
            pf.StartPoint = new Point(x1, y1);
            bz.Point1 = new Point(x1 * 0.6 + x2 * 0.4, y1);
            bz.Point2 = new Point(x1 * 0.4 + x2 * 0.6, y2);
            bz.Point3 = new Point(x2, y2);

            // if x2 == x1 or y2 == y1 then the flow will not happen
            // so we can "override" those cases with slightly fake values
            if (x2 == x1)
                x2 += 0.00001;
            if (y2 == y1)
                y2 += 0.00001;

            flow.StartPoint = pf.StartPoint;
            flow.EndPoint = bz.Point3;

            TransformGroup rt = new TransformGroup();
            rt.Children.Add(new ScaleTransform(10.0 / Math.Abs(x2 - x1), 10.0 / Math.Abs(y2 - y1)));
            
            flowOffset = new TranslateTransform(0, 0);

            if (x1 < x2)
                da = new DoubleAnimation(0.0, 1.0, new Duration(new TimeSpan(0, 0, (int)Math.Abs(x2 - x1) / 10)));
            else
                da = new DoubleAnimation(1.0, 0.0, new Duration(new TimeSpan(0, 0, (int)Math.Abs(x2 - x1) / 10)));
            
            da.RepeatBehavior = RepeatBehavior.Forever;
            da.IsCumulative = true;
            flowOffset.BeginAnimation(TranslateTransform.XProperty, da);

            if (y1 < y2)
                da = new DoubleAnimation(0.0, 1.0, new Duration(new TimeSpan(0, 0, (int)Math.Abs(y2 - y1) / 10)));
            else
                da = new DoubleAnimation(1.0, 0.0, new Duration(new TimeSpan(0, 0, (int)Math.Abs(y2 - y1) / 10)));

            da.RepeatBehavior = RepeatBehavior.Forever;
            da.IsCumulative = true;
            flowOffset.BeginAnimation(TranslateTransform.YProperty, da);

            rt.Children.Add(flowOffset);
            flow.RelativeTransform = rt;
        }
예제 #23
0
        public void CrawlText(string crawltext)
        {
            crawlLabel.Content = crawltext;
            crawlLabel.UpdateLayout();
            crawlLabel.BeginInit();
            this.InitializeComponent();
            TranslateTransform offsetTransform = new TranslateTransform();
            //MessageBox.Show(crawlLabel.Content.ToString());

            DoubleAnimation offsetXAnimation = new DoubleAnimation(1920, -(crawlLabel.ActualWidth), new Duration(TimeSpan.FromSeconds(30 * (crawlLabel.ActualWidth / 5000))));
            offsetXAnimation.RepeatBehavior = RepeatBehavior.Forever;
            offsetXAnimation.BeginTime = TimeSpan.FromSeconds(0);
            offsetTransform.BeginAnimation(TranslateTransform.XProperty, offsetXAnimation);

            crawlLabel.RenderTransform = offsetTransform;
        }
예제 #24
0
        /// <summary>
        /// animation for showing the controls
        /// </summary>
        private void showControls() {
            if (isAnimating == false) {
                DoubleAnimation anim = new DoubleAnimation() {
                    To = 0,
                    From = controls.ActualHeight,
                    Duration = TimeSpan.FromMilliseconds(200),
                    FillBehavior = FillBehavior.HoldEnd
                };

                anim.Completed += animShow_Completed;
                isControlPanelVisible = true;
                isAnimating = true;
                TranslateTransform tt = new TranslateTransform();
                controls.RenderTransform = tt;
                tt.BeginAnimation(TranslateTransform.YProperty, anim);
            }
        }
예제 #25
0
 private void Button_Click(object sender, RoutedEventArgs e)
 {
     int start_time = 500;
     DoubleAnimation da = new DoubleAnimation(0, System.Windows.SystemParameters.PrimaryScreenWidth, TimeSpan.FromMilliseconds(start_time));
     DoubleAnimation daa = new DoubleAnimation(1, 0.3, TimeSpan.FromMilliseconds(start_time));
     ExponentialEase easing = new ExponentialEase();
     easing.EasingMode = EasingMode.EaseIn;
     easing.Exponent = 5;
     da.EasingFunction = easing;
     daa.EasingFunction = easing;
     da.Completed += (oo, ee) => { this.Close(); };
     TranslateTransform tt = new TranslateTransform();
     this.RenderTransformOrigin = new Point(System.Windows.SystemParameters.PrimaryScreenWidth, 0);
     this.RenderTransform = tt;
     tt.BeginAnimation(TranslateTransform.XProperty, da);
     this.BeginAnimation(OpacityProperty, daa);
 }
        public void Wipe(TransitionerSlide fromSlide, TransitionerSlide toSlide, Point origin, IZIndexController zIndexController)
        {
            if (fromSlide == null) throw new ArgumentNullException(nameof(fromSlide));
            if (toSlide == null) throw new ArgumentNullException(nameof(toSlide));
            if (zIndexController == null) throw new ArgumentNullException(nameof(zIndexController));

            var zeroKeyTime = KeyTime.FromTimeSpan(TimeSpan.Zero);
            var midishKeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(200));
            var endKeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(400));

            //back out old slide setup
            var scaleTransform = new ScaleTransform(1, 1);
            fromSlide.RenderTransform = scaleTransform;
            var scaleAnimation = new DoubleAnimationUsingKeyFrames();
            scaleAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, zeroKeyTime));
            scaleAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(.8, endKeyTime));
            scaleAnimation.Completed += (sender, args) =>
            {
                fromSlide.RenderTransform = null;                             
            };
            var opacityAnimation = new DoubleAnimationUsingKeyFrames();
            opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, zeroKeyTime));
            opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(0, endKeyTime));
            opacityAnimation.Completed += (sender, args) =>
            {
                fromSlide.BeginAnimation(UIElement.OpacityProperty, null);
                fromSlide.Opacity = 0;
            };

            //slide in new slide setup
            var translateTransform = new TranslateTransform(0, toSlide.ActualHeight);
            toSlide.RenderTransform = translateTransform;            
            var slideAnimation = new DoubleAnimationUsingKeyFrames();
            slideAnimation.KeyFrames.Add(new LinearDoubleKeyFrame(toSlide.ActualHeight, zeroKeyTime));
            slideAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(toSlide.ActualHeight, midishKeyTime) { EasingFunction = _sineEase});
            slideAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(0, endKeyTime) { EasingFunction = _sineEase });

            //kick off!
            translateTransform.BeginAnimation(TranslateTransform.YProperty, slideAnimation);
            scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, scaleAnimation);            
            scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnimation);
            fromSlide.BeginAnimation(UIElement.OpacityProperty, opacityAnimation);

            zIndexController.Stack(toSlide, fromSlide);
        }
예제 #27
0
        public static void AddChildAnimate(UIElement child, Grid grid, int start_time)
        {
            AddChild(child, grid);

            child.Opacity = 0.0;

            DoubleAnimation an = new DoubleAnimation(0.0, 1.0, TimeSpan.FromMilliseconds(200));
            an.BeginTime = TimeSpan.FromMilliseconds(start_time+=80);

            child.BeginAnimation(btnDugmeTemp.OpacityProperty, an);

            DoubleAnimation da = new DoubleAnimation(50, 0, new Duration(TimeSpan.FromMilliseconds(200)));
            da.BeginTime = TimeSpan.FromMilliseconds(start_time);
            da.DecelerationRatio = 0.7;
            TranslateTransform rt = new TranslateTransform();
            child.RenderTransform = rt;
            rt.BeginAnimation(TranslateTransform.XProperty, da);
        }
예제 #28
0
 public void Remove()
 {
     TranslateTransform ttup = new TranslateTransform();
     TranslateTransform ttdown = new TranslateTransform();
     DoubleAnimation up = new DoubleAnimation();
     DoubleAnimation down = new DoubleAnimation();
     //动画时间
     Duration duration = new Duration(TimeSpan.FromSeconds(0.2));
     //设置按钮的转换效果
     buttonInOrder.RenderTransform = ttup;
     buttonRandom.RenderTransform = ttdown;
     ttup.Y = 74;
     ttdown.Y = -74;
     up.To = -74;
     down.To = 74;
     up.Duration = duration;
     down.Duration = duration;
     //开始动画
     ttup.BeginAnimation(TranslateTransform.YProperty, up);
     ttdown.BeginAnimation(TranslateTransform.YProperty, down);
 }
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            Type type = typeof(double);
            if ((((values == null) || (values.Length != 3)) || ((values[0] == null) || (values[1] == null))) || (((values[2] == null) || !typeof(Brush).IsAssignableFrom(values[0].GetType())) || (!type.IsAssignableFrom(values[1].GetType()) || !type.IsAssignableFrom(values[2].GetType()))))
            {
                return null;
            }
            Brush brush = (Brush)values[0];
            double d = (double)values[1];
            double num2 = (double)values[2];
            if ((((d <= 0) || double.IsInfinity(d)) || (double.IsNaN(d) || (num2 <= 0))) || (double.IsInfinity(num2) || double.IsNaN(num2)))
            {
                return null;
            }
            DrawingBrush brush2 = new DrawingBrush();
            double width = d * 2;
            brush2.Viewport = brush2.Viewbox = new Rect(-d, 0, width, num2);
            brush2.ViewportUnits = brush2.ViewboxUnits = BrushMappingMode.Absolute;
            brush2.TileMode = TileMode.None;
            brush2.Stretch = Stretch.None;
            DrawingGroup group = new DrawingGroup();
            DrawingContext context = group.Open();
            context.DrawRectangle(brush, null, new Rect(-d, 0, d, num2));
            TimeSpan keyTime = TimeSpan.FromSeconds(width / 200);
            TimeSpan span2 = TimeSpan.FromSeconds(1);
            DoubleAnimationUsingKeyFrames animation = new DoubleAnimationUsingKeyFrames();
            animation.BeginTime = new TimeSpan?(TimeSpan.Zero);
            animation.Duration = new Duration(keyTime + span2);
            animation.RepeatBehavior = RepeatBehavior.Forever;

            animation.KeyFrames.Add(new LinearDoubleKeyFrame(width, keyTime));
            TranslateTransform transform = new TranslateTransform();
            transform.BeginAnimation(TranslateTransform.XProperty, animation);
            brush2.Transform = transform;
            context.Close();
            brush2.Drawing = group;
            return brush2;
        }
예제 #30
-1
        private void frm_nav_Navigated(object sender, NavigationEventArgs e)
        {
            double translateTo = 0.0, translateFrom = 0.0;
            var currentStep = (int)App.Current.Properties[Constants.ApplicationProperties.CurrentStep];
            var nextStep = (int)App.Current.Properties[Constants.ApplicationProperties.NextStep];

            //switch (currentStep)
            //{
            //    case Constants.ApplicationProperties.Steps.step1:
            //        translateTo = txb_pg1.Margin.Top - rectangle1.Margin.Top;
            //        break;
            //    case Constants.ApplicationProperties.Steps.step2:
            //        translateTo = txb_pg2.Margin.Top - rectangle1.Margin.Top;
            //        translateFrom = txb_pg1.Margin.Top;
            //        break;
            //    case Constants.ApplicationProperties.Steps.step3:
            //        translateTo = txb_pg2.Margin.Top - rectangle1.Margin.Top;
            //        translateFrom = txb_pg1.Margin.Top;
            //        break;
            //    default:
            //        break;
            //}

            translateTo = nextStep;
            translateFrom = currentStep;


            App.Current.Properties["stepSlider"] = translateTo;
            var transform = new TranslateTransform();
            Duration duration = new Duration(new TimeSpan(0, 0, 0, 2, 0));
            DoubleAnimation anim = new DoubleAnimation(translateFrom, translateTo, duration);
            transform.BeginAnimation(TranslateTransform.YProperty, anim);
            rectangle1.RenderTransform = transform;
        }