/// <summary> /// Starts the segment. /// </summary> /// <param name="atIndex">At index.</param> /// <param name="location">The location.</param> public virtual void StartSegment(int atIndex, CorePoint location) { if (Splitters.Count <= ActiveSplitters) Splitters.Add(new LineSegmentSplitter {IsNew = true}); var splitter = Splitters[ActiveSplitters]; splitter.SplitterCollectorIndex = SplittersCollector; ActiveSplitters++; var animSpeed = Model.Chart.View.AnimationsSpeed; var noAnim = Model.Chart.View.DisableAnimations; if (atIndex != 0) { Figure.Segments.Remove(splitter.Bottom); if (splitter.IsNew) { splitter.Bottom.Point = new Point(location.X, Model.Chart.DrawMargin.Height); splitter.Left.Point = new Point(location.X, Model.Chart.DrawMargin.Height); } if (noAnim) splitter.Bottom.Point = new Point(location.X, Model.Chart.DrawMargin.Height); else splitter.Bottom.BeginAnimation(LineSegment.PointProperty, new PointAnimation(new Point(location.X, Model.Chart.DrawMargin.Height), animSpeed)); Figure.Segments.Insert(atIndex, splitter.Bottom); Figure.Segments.Remove(splitter.Left); if (noAnim) splitter.Left.Point = location.AsPoint(); else splitter.Left.BeginAnimation(LineSegment.PointProperty, new PointAnimation(location.AsPoint(), animSpeed)); Figure.Segments.Insert(atIndex + 1, splitter.Left); return; } if (splitter.IsNew) { splitter.Bottom.Point = new Point(location.X, Model.Chart.DrawMargin.Height); splitter.Left.Point = new Point(location.X, Model.Chart.DrawMargin.Height); } Figure.Segments.Remove(splitter.Left); if (Model.Chart.View.DisableAnimations) splitter.Left.Point = location.AsPoint(); else splitter.Left.BeginAnimation(LineSegment.PointProperty, new PointAnimation(location.AsPoint(), animSpeed)); Figure.Segments.Insert(atIndex, splitter.Left); }