internal override void Animate() { if (animation != null) { animation.Stop(); if (sb != null) { sb.Stop(); } if (!canAnimate) { ResetAdornmentAnimationState(); return; } } var seriesRect = Area.SeriesClipRect; animation = new RectAnimation() { From = (IsActualTransposed) ? new Rect(0, seriesRect.Bottom, seriesRect.Width, seriesRect.Height) : new Rect(0, seriesRect.Y, 0, seriesRect.Height), To = (IsActualTransposed) ? new Rect(0, seriesRect.Y, 0, seriesRect.Height) : new Rect(0, seriesRect.Y, seriesRect.Width, seriesRect.Height), Duration = AnimationDuration.TotalSeconds == 1 ? TimeSpan.FromSeconds(0.4) : AnimationDuration }; animation.SetTarget(SeriesRootPanel); animation.Begin(); AnimateAdornments(); }
internal override void Dispose() { if (animation != null) { animation.Stop(); animation = null; } if (sb != null) { sb.Stop(); sb.Children.Clear(); sb = null; } base.Dispose(); }
internal override void Animate() { if (animation != null) { animation.Stop(); if (!canAnimate) { ResetAdornmentAnimationState(); return; } } var seriesRect = Area.SeriesClipRect; animation = new RectAnimation() { From = (IsActualTransposed) ? new Rect(0, seriesRect.Bottom, seriesRect.Width, seriesRect.Height) : new Rect(0, seriesRect.Y, 0, seriesRect.Height), To = (IsActualTransposed) ? new Rect(0, seriesRect.Y, 0, seriesRect.Height) : new Rect(0, seriesRect.Y, seriesRect.Width, seriesRect.Height), Duration = AnimationDuration.TotalSeconds == 1 ? TimeSpan.FromSeconds(0.4) : AnimationDuration }; animation.SetTarget(SeriesRootPanel); animation.Begin(); if (this.AdornmentsInfo != null) { var adornTransXPath = "(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"; var adornTransYPath = "(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"; sb = new Storyboard(); double secondsPerPoint = (AnimationDuration.TotalSeconds / YValues.Count); secondsPerPoint *= 2; int i = 0; foreach (FrameworkElement label in this.AdornmentsInfo.LabelPresenters) { var transformGroup = label.RenderTransform as TransformGroup; var scaleTransform = new ScaleTransform() { ScaleX = 0, ScaleY = 0 }; if (transformGroup != null) { if (transformGroup.Children.Count > 0 && transformGroup.Children[0] is ScaleTransform) { transformGroup.Children[0] = scaleTransform; } else { transformGroup.Children.Insert(0, scaleTransform); } } label.RenderTransformOrigin = new Point(0.5, 0.5); DoubleAnimation keyFrames1 = new DoubleAnimation() { From = 0.3, To = 1, Duration = TimeSpan.FromSeconds(AnimationDuration.TotalSeconds / 2), BeginTime = TimeSpan.FromSeconds(i * secondsPerPoint) }; keyFrames1.EnableDependentAnimation = true; Storyboard.SetTargetProperty(keyFrames1, adornTransXPath); Storyboard.SetTarget(keyFrames1, label); sb.Children.Add(keyFrames1); keyFrames1 = new DoubleAnimation() { From = 0.3, To = 1, Duration = TimeSpan.FromSeconds(AnimationDuration.TotalSeconds / 2), BeginTime = TimeSpan.FromSeconds(i * secondsPerPoint) }; keyFrames1.EnableDependentAnimation = true; Storyboard.SetTargetProperty(keyFrames1, adornTransYPath); Storyboard.SetTarget(keyFrames1, label); sb.Children.Add(keyFrames1); i++; } sb.Begin(); } }