public void AnimateTo(ulong visibleTimeStart, ulong visibleTimeEnd) { if (visibleTimeStart < this.axis.AbsoluteTimeStart) { visibleTimeStart = this.axis.AbsoluteTimeStart; } if (visibleTimeEnd > this.axis.AbsoluteTimeEnd) { visibleTimeEnd = this.axis.AbsoluteTimeEnd; } if( visibleTimeStart > this.axis.AbsoluteTimeEnd ) { visibleTimeStart = this.axis.AbsoluteTimeStart; } if (!axis.IsAnimationEnabled) { Stop(); this.axis.VisibleTimeStart = visibleTimeStart; this.axis.VisibleTimeEnd = visibleTimeEnd; return; } double acceleration = 0.3; if (this.observedAnimation != null) { this.observedAnimation.Completed -= OnRunningAnimationCompleted; acceleration = 0d; } var startAnim = new UInt64Animation { To = visibleTimeStart, AccelerationRatio = acceleration, DecelerationRatio = 0.4, Duration = TimeSpan.FromMilliseconds(1400) }; var endAnim = new UInt64Animation { To = visibleTimeEnd, AccelerationRatio = acceleration, DecelerationRatio = 0.4, Duration = TimeSpan.FromMilliseconds(1400) }; this.runningAnimation = startAnim; this.observedAnimation = startAnim; this.observedAnimation.Completed += OnRunningAnimationCompleted; this.visibleStartDest = visibleTimeStart; this.visibleEndDest = visibleTimeEnd; this.axis.BeginAnimation(TimeAxis.VisibleTimeStartProperty, startAnim); this.axis.BeginAnimation(TimeAxis.VisibleTimeEndProperty, endAnim); }
public void Stop() { if (this.observedAnimation != null) { this.observedAnimation.Completed -= OnRunningAnimationCompleted; this.observedAnimation = null; this.runningAnimation = null; this.axis.BeginAnimation(TimeAxis.VisibleTimeStartProperty, null); this.axis.BeginAnimation(TimeAxis.VisibleTimeEndProperty, null); this.axis.VisibleTimeStart = this.visibleStartDest; this.axis.VisibleTimeEnd = this.visibleEndDest; } }