public Task StopAsync()
        {
            TaskCompletionSource<object> tcs = new TaskCompletionSource<object>();

            if (_Running != true)
            {
                tcs.SetResult(null);
                return tcs.Task;
            }

            Storyboard SB = new Storyboard();

            _Running = false;

            double cangle = RotateTransform.Angle;

            int Nb = (int)Math.Round((360 - cangle) / 45) + 1;

            DoubleAnimationUsingKeyFrames dauk = new DoubleAnimationUsingKeyFrames();
            for (int i = 0; i < 17; i++)
            {
                DiscreteDoubleKeyFrame first = new DiscreteDoubleKeyFrame(cangle + 45 * i, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(i * Frequency)));
                dauk.KeyFrames.Add(first);
            }
            Storyboard.SetTarget(dauk, VB);
            Storyboard.SetTargetProperty(dauk, new PropertyPath("(RenderTransform).(RotateTransform.Angle)"));
            SB.Children.Add(dauk);

            for (int i = 0; i < 8; i++)
            {
                ObjectAnimationUsingKeyFrames oauk = new ObjectAnimationUsingKeyFrames();

                oauk.RepeatBehavior = new RepeatBehavior(1);

                DiscreteObjectKeyFrame first = new DiscreteObjectKeyFrame(Visibility.Visible, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(Frequency * Nb)));
                oauk.KeyFrames.Add(first);
                DiscreteObjectKeyFrame first_1 = new DiscreteObjectKeyFrame(Visibility.Collapsed, KeyTime.FromTimeSpan(TimeSpan.FromSeconds((i + Nb) * Frequency)));
                oauk.KeyFrames.Add(first_1);
                DiscreteObjectKeyFrame second = new DiscreteObjectKeyFrame(Visibility.Collapsed, KeyTime.FromTimeSpan(TimeSpan.FromSeconds((i + Nb) * Frequency)));
                oauk.KeyFrames.Add(second);

                Storyboard.SetTarget(oauk, this.FindName(string.Format("E{0}", i)) as DependencyObject);
                Storyboard.SetTargetProperty(oauk, new PropertyPath("Visibility"));

                SB.Children.Add(oauk);
            }

            _SB.Stop();
           
            EventHandler handler = null;
            handler = delegate
            {
                SB.Completed -= handler;
                tcs.SetResult(null);
            };
            SB.Completed += handler;
            SB.Begin();

            return tcs.Task;
        }
        private DoubleAnimationUsingKeyFrames GetAnimation()
        {
            NameScope.SetNameScope(this, new NameScope());

            var animation = new DoubleAnimationUsingKeyFrames();

            for (int i = 0; i < NumberOfFrames; i++)
            {
                var angle = i * 360.0 / NumberOfFrames;
                var time = KeyTime.FromPercent(((double)i) / NumberOfFrames);
                DoubleKeyFrame frame = new DiscreteDoubleKeyFrame(angle, time);
                animation.KeyFrames.Add(frame);
            }

            animation.Duration = TimeSpan.FromSeconds(1 / RevolutionsPerSecond);
            animation.RepeatBehavior = RepeatBehavior.Forever;

            Storyboard.SetTargetName(animation, ANIMATION);
            Storyboard.SetTargetProperty(animation, new PropertyPath(RotateTransform.AngleProperty));

            return animation;
        }
Beispiel #3
0
		public void NullableKeyTime ()
		{	
			var kf = new DiscreteDoubleKeyFrame ();
			kf.SetValue (DoubleKeyFrame.KeyTimeProperty, null);
			Assert.AreEqual (new KeyTime (), kf.ReadLocalValue (DoubleKeyFrame.KeyTimeProperty), "#0");
			Assert.Throws<ArgumentException>(() => kf.SetValue (DoubleKeyFrame.ValueProperty, null), "#1");
			Assert.AreEqual (new KeyTime (), kf.KeyTime, "#2");
		}
        /// <summary>
        /// アニメーションを更新します。
        /// </summary>
        private void UpdateAnimation()
        {
            _storyboard.Stop();

            if (this.Ellipse1 == null)
                return;
            if (double.IsNaN(this.ActualWidth))
                return;

            _initialKeyFrame = new DiscreteDoubleKeyFrame(-this.Ellipse1.ActualWidth, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(0)));
            var splineDoubleKeyFrame = new SplineDoubleKeyFrame(this.ActualWidth, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(3000)), new KeySpline(0.3, 0.85, 0.7, 0.15));

            _animation0_1.KeyFrames.Clear();
            _animation0_2.KeyFrames.Clear();
            _animation0_3.KeyFrames.Clear();
            _animation0_4.KeyFrames.Clear();
            _animation0_5.KeyFrames.Clear();

            _animation0_1.KeyFrames.Add(_initialKeyFrame);
            _animation0_2.KeyFrames.Add(_initialKeyFrame);
            _animation0_3.KeyFrames.Add(_initialKeyFrame);
            _animation0_4.KeyFrames.Add(_initialKeyFrame);
            _animation0_5.KeyFrames.Add(_initialKeyFrame);

            _animation1.KeyFrames.Clear();
            _animation2.KeyFrames.Clear();
            _animation3.KeyFrames.Clear();
            _animation4.KeyFrames.Clear();
            _animation5.KeyFrames.Clear();

            _animation1.KeyFrames.Add(splineDoubleKeyFrame);
            _animation2.KeyFrames.Add(splineDoubleKeyFrame);
            _animation3.KeyFrames.Add(splineDoubleKeyFrame);
            _animation4.KeyFrames.Add(splineDoubleKeyFrame);
            _animation5.KeyFrames.Add(splineDoubleKeyFrame);

            _storyboard.Begin();
        }
        private void Root_Loaded(object sender, RoutedEventArgs e)
        {
            _SB = new Storyboard();

            DoubleAnimationUsingKeyFrames dauk = new DoubleAnimationUsingKeyFrames();
            dauk.RepeatBehavior = RepeatBehavior.Forever;
            for (int i = 0; i < 9; i++)
            {
                DiscreteDoubleKeyFrame first = new DiscreteDoubleKeyFrame(45 * i, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(i * Frequency)));
                dauk.KeyFrames.Add(first);
            }
            Storyboard.SetTarget(dauk, VB);
            Storyboard.SetTargetProperty(dauk, new PropertyPath("(RenderTransform).(RotateTransform.Angle)"));
            _SB.Children.Add(dauk);



            for (int i = 1; i < 8; i++)
            {
                ObjectAnimationUsingKeyFrames oauk = new ObjectAnimationUsingKeyFrames();

                oauk.RepeatBehavior = new RepeatBehavior(1);

                DiscreteObjectKeyFrame first = new DiscreteObjectKeyFrame(Visibility.Collapsed, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0)));
                oauk.KeyFrames.Add(first);
                DiscreteObjectKeyFrame first_1 = new DiscreteObjectKeyFrame(Visibility.Collapsed, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(i * Frequency)));
                oauk.KeyFrames.Add(first_1);
                DiscreteObjectKeyFrame second = new DiscreteObjectKeyFrame(Visibility.Visible, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(i * Frequency)));
                oauk.KeyFrames.Add(second);

                Storyboard.SetTarget(oauk, this.FindName(string.Format("E{0}", i)) as DependencyObject);
                Storyboard.SetTargetProperty(oauk, new PropertyPath("Visibility"));

                _SB.Children.Add(oauk);
            }

            Start();
        }
Beispiel #6
0
 private static DoubleKeyFrame CreateDoubleKeyFrmas(KeyFrames<double> Model)
 {
     DoubleKeyFrame frame = null;
     switch (Model.Type)
     {
         case KeyFramesType.Spline: frame = new SplineDoubleKeyFrame() { KeySpline = Model.Spline }; break;
         case KeyFramesType.Linear: frame = new LinearDoubleKeyFrame(); break;
         case KeyFramesType.Easing: frame = new EasingDoubleKeyFrame() { EasingFunction = Model.EasingFunction }; break;
         case KeyFramesType.Discrete: frame = new DiscreteDoubleKeyFrame(); break;
         default: break;
     }
     frame.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(Model.KeyTime)); 
     frame.Value = Model.Value;
     return frame;
 }
        private static void Grid_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
        {
            var cp = GetCP(sender);

            if (cp == null)
            {
                return;
            }

            MenuItem mi = (sender as MenuItem);

            cp.Item1.Content = mi.Header;

            cp.Item1.Opacity = 0;

            Storyboard sb = new Storyboard();


            double currentangle = normaliseangle((cp.Item3.RenderTransform as RotateTransform).Angle);
            double targetangle = -SimpleCirclePanel.GetDecalAngle(mi);

            targetangle = normaliseangle(targetangle - currentangle) + currentangle;

            double delta = targetangle - currentangle;

            if (delta > 180)
            {
                targetangle = targetangle - 360;
            }
            else if (delta < -180)
            {
                targetangle = targetangle + 360;
            }

            //Console.WriteLine(targetangle);

            DoubleAnimation da0 = new DoubleAnimation(currentangle, targetangle, new Duration(TimeSpan.FromSeconds(0.3)));
            da0.AccelerationRatio = 0.2; da0.DecelerationRatio = 0.2;
            Storyboard.SetTarget(da0, cp.Item3);
            Storyboard.SetTargetProperty(da0, new PropertyPath("(Path.RenderTransform).(RotateTransform.Angle)"));
            sb.Children.Add(da0);

            DoubleAnimationUsingKeyFrames myAnimation = new DoubleAnimationUsingKeyFrames();

            DiscreteDoubleKeyFrame opacityChange1 = new DiscreteDoubleKeyFrame();
            opacityChange1.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0));
            opacityChange1.Value = 0;
            myAnimation.KeyFrames.Add(opacityChange1);

            DiscreteDoubleKeyFrame opacityChange2 = new DiscreteDoubleKeyFrame();
            opacityChange2.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0.4));
            opacityChange2.Value = 0;
            myAnimation.KeyFrames.Add(opacityChange2);

            LinearDoubleKeyFrame opacityChange3 = new LinearDoubleKeyFrame();
            opacityChange3.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0.9));
            opacityChange3.Value = 1;
            myAnimation.KeyFrames.Add(opacityChange3);

            Storyboard.SetTarget(myAnimation, cp.Item1);
            Storyboard.SetTargetProperty(myAnimation, new PropertyPath("Opacity"));
            sb.Children.Add(myAnimation);

            sb.Begin();

        }
        private Timeline GetAnimation()
        {
            NameScope.SetNameScope( this, new NameScope() );
            Timeline animation = null;

            if ( UseKeyFrames )
            {
                animation = new DoubleAnimationUsingKeyFrames() { RepeatBehavior = RepeatBehavior.Forever };

                for ( int i = 0; i < NumberOfFrames; i++ )
                {
                    var angle = i * 360.0 / (double)NumberOfFrames;
                    var time = KeyTime.FromPercent( ( Convert.ToDouble( i ) ) / NumberOfFrames );
                    DoubleKeyFrame frame = new DiscreteDoubleKeyFrame( angle, time );
                    ( (DoubleAnimationUsingKeyFrames)animation ).KeyFrames.Add( frame );
                }
            }
            else
            {
                animation = new DoubleAnimation( 0.0D, 360.0D, TimeSpan.FromSeconds( 1 / RevolutionsPerSecond ) ) { RepeatBehavior = RepeatBehavior.Forever };

                if ( NumberOfFrames != 16 )
                {
                    Storyboard.SetDesiredFrameRate( animation, NumberOfFrames );
                }
            }

            Storyboard.SetTargetName( animation, string.Format( "{0}{1}", m_AnimationName, ContentSpinner.ANIMATION ) );
            Storyboard.SetTargetProperty( animation, new PropertyPath( RotateTransform.AngleProperty ) );

            return animation;
        }