/// <summary> /// Generates the datas. /// </summary> public override void GenerateDatas() { LowPoints.Clear(); HighPoints.Clear(); if (!IsPointsGenerated) Parts.Clear(); if (Points != null && SeriesContainer != null) { CalculateMinAndMax(); ChartPoint oldPoint = new ChartPoint { XValue = double.MinValue, YValue = double.MinValue }; IntializePoints(); int index = 0; foreach (ChartPoint point in Points) { if (CheckValuePoint(oldPoint,point)) { Point highPoint = NormalizePoint(new Point(point.XValue, point.YValue)); Point lowPoint = NormalizePoint(new Point(lowPoints[index].XValue, lowPoints[index].YValue)); HighPoints.Add(highPoint); LowPoints.Add(lowPoint); oldPoint = point; } index++; } if (RenderingMode == RenderingMode.Default) { if (!IsPointsGenerated) { for (int i = 0; i < HighPoints.Count; i++) { LinePart linePart = new LinePart(HighPoints[i], LowPoints[i]); SetBindingForStrokeandStrokeThickness(linePart); Parts.Add(linePart); } IsPointsGenerated = true; } else { int i = 0; foreach (LinePart part in Parts) { part.X1 = HighPoints[i].X; part.Y1 = HighPoints[i].Y; part.X2 = LowPoints[i].X; part.Y2 = LowPoints[i].Y; part.Refresh(); i++; } } } } else { Parts.Clear(); } if (this.SeriesContainer != null) this.SeriesContainer.Invalidate(); IsRefreshed = false; }
/// <summary> /// Generates the datas. /// </summary> public override void GenerateDatas() { if (Points != null && SeriesContainer != null) { LinePoints = new PointCollection(); if (!IsPointsGenerated) Parts.Clear(); CalculateMinAndMax(); ChartPoint oldPoint = new ChartPoint { XValue = double.MinValue, YValue = double.MinValue }; IntializePoints(); foreach (ChartPoint point in Points) { if (CheckValuePoint(oldPoint,point)) { Point linePoint = NormalizePoint(new Point(point.XValue, point.YValue)); LinePoints.Add(linePoint); oldPoint = point; } } if (RenderingMode == RenderingMode.Default) { if (!IsPointsGenerated) { if (!UseSinglePart) { for (int i = 0; i < LinePoints.Count - 1; i++) { if (CheckValue(LinePoints[i].X) && CheckValue(LinePoints[i].Y) && CheckValue(LinePoints[i + 1].X) && CheckValue(LinePoints[i + 1].Y)) { LinePart linePart = new LinePart(LinePoints[i], LinePoints[i + 1]); SetBindingForStrokeandStrokeThickness(linePart); Parts.Add(linePart); } } } else { LineSinglePart singlePart = new LineSinglePart(LinePoints); SetBindingForStrokeandStrokeThickness(singlePart); Parts.Add(singlePart); } IsPointsGenerated = true; } else { int i=0; if (!UseSinglePart) { foreach (LinePart part in Parts) { if (CheckValue(LinePoints[i].X) && CheckValue(LinePoints[i].Y) && CheckValue(LinePoints[i + 1].X) && CheckValue(LinePoints[i + 1].Y)) { part.X1 = LinePoints[i].X; part.Y1 = LinePoints[i].Y; part.X2 = LinePoints[i + 1].X; part.Y2 = LinePoints[i + 1].Y; part.Refresh(); } i++; } } else { foreach (LineSinglePart part in Parts) { part.LinePoints = LinePoints; part.Refresh(); i++; } } } } } if (this.SeriesContainer != null) this.SeriesContainer.Invalidate(); IsRefreshed = false; }
/// <summary> /// Generates the datas. /// </summary> public override void GenerateDatas() { AreaPoints.Clear(); if (!IsPointsGenerated) Parts.Clear(); Point endPoint; Point startPoint=new Point(0,0); int index = 0; if (this.Points != null && this.SeriesContainer != null && this.Points.Count > 1) { CalculateMinAndMax(); ChartPoint oldPoint = new ChartPoint() { XValue = double.MinValue, YValue = double.MinValue }; IntializePoints(); AreaPoints.Add(startPoint); foreach (ChartPoint point in this.Points) { if (CheckValuePoint(oldPoint,point)) { Point linePoint = NormalizePoint(new Point(point.XValue, point.YValue)); if (index == 0) linePoint.X = linePoint.X - this.StrokeThickness; AreaPoints.Add(linePoint); } } if (this.RenderingMode == RenderingMode.Default) { if (!IsPointsGenerated) { for (int i = 0; i < AreaPoints.Count - 2; i++) { startPoint = NormalizePoint(new Point(this.Points[i].XValue, YMin)); endPoint = NormalizePoint(new Point(this.Points[i + 1].XValue, YMin)); AreaPart areaPart = new AreaPart(AreaPoints[i + 1], startPoint, endPoint, AreaPoints[i + 2]); SetBindingForStrokeandStrokeThickness(areaPart); this.Parts.Add(areaPart); } IsPointsGenerated = true; } else { int i = 0; foreach (AreaPart part in this.Parts) { startPoint = NormalizePoint(new Point(this.Points[i].XValue, YMin)); endPoint = NormalizePoint(new Point(this.Points[i + 1].XValue, YMin)); part.StartPoint = AreaPoints[i + 1]; part.AreaStartPoint = startPoint; part.AreaEndPoint = endPoint; part.EndPoint = AreaPoints[i + 2]; part.Refresh(); i++; } } } endPoint = NormalizePoint(new Point(this.Points[this.Points.Count - 1].XValue, YMin)); startPoint = NormalizePoint(new Point(this.Points[0].XValue, YMin)); startPoint.X = startPoint.X - this.StrokeThickness; if (AreaPoints.Count > 0) { AreaPoints[0] = startPoint; AreaPoints.Add(endPoint); } } else { Parts.Clear(); } if (this.SeriesContainer != null) this.SeriesContainer.Invalidate(); IsRefreshed = false; }
/// <summary> /// Generates the datas. /// </summary> public override void GenerateDatas() { LowPoints.Clear(); HighPoints.Clear(); OpenPoints.Clear(); ClosePoints.Clear(); if (!IsPointsGenerated) Parts.Clear(); if (this.Points != null && this.SeriesContainer != null) { CalculateMinAndMax(); OpenOffPoints = new PointCollection(); CloseOffPoints = new PointCollection(); ChartPoint oldPoint = new ChartPoint() { XValue = double.MinValue, YValue = double.MinValue }; IntializePoints(); int index = 0; Point startAndEndPoint = CalculateSeriesInfo(); foreach (ChartPoint point in this.Points) { if (CheckValuePoint(oldPoint, point)) { Point highPoint = NormalizePoint(new Point(point.XValue, point.YValue)); Point lowPoint = NormalizePoint(new Point(lowPoints[index].XValue, lowPoints[index].YValue)); Point openPoint = NormalizePoint(new Point(openPoints[index].XValue, openPoints[index].YValue)); Point closePoint = NormalizePoint(new Point(closePoints[index].XValue, closePoints[index].YValue)); Point openOffPoint = NormalizePoint(new Point(openPoints[index].XValue + startAndEndPoint.X, openPoints[index].YValue)); Point closeOffPoint = NormalizePoint(new Point(closePoints[index].XValue - startAndEndPoint.X, closePoints[index].YValue)); HighPoints.Add(highPoint); LowPoints.Add(lowPoint); OpenPoints.Add(openPoint); ClosePoints.Add(closePoint); OpenOffPoints.Add(openOffPoint); CloseOffPoints.Add(closeOffPoint); oldPoint = point; } index++; } if (this.RenderingMode == RenderingMode.Default) { if (!IsPointsGenerated) { for (int i = 0; i < this.HighPoints.Count; i++) { HiLoOpenClosePart hiLoOpenClosePart = new HiLoOpenClosePart(this.HighPoints[i],this.LowPoints[i],this.ClosePoints[i],this.CloseOffPoints[i],this.OpenPoints[i],this.OpenOffPoints[i]); if (this.openPoints[i].YValue <= this.closePoints[i].YValue) hiLoOpenClosePart.IsBearfill = true; else hiLoOpenClosePart.IsBearfill = false; SetBindingForStrokeandStrokeThickness(hiLoOpenClosePart); this.Parts.Add(hiLoOpenClosePart); } IsPointsGenerated = true; } else { int i = 0; foreach (HiLoOpenClosePart part in this.Parts) { part.Point1 = this.HighPoints[i]; part.Point2 = this.LowPoints[i]; part.Point3 = this.ClosePoints[i]; part.Point4 = this.CloseOffPoints[i]; part.Point5 = this.OpenPoints[i]; part.Point6 = this.OpenOffPoints[i]; part.Refresh(); i++; } } } } else { Parts.Clear(); } if (this.SeriesContainer != null) this.SeriesContainer.Invalidate(); IsRefreshed = false; }
/// <summary> /// Generates the datas. /// </summary> public override void GenerateDatas() { LinePoints.Clear(); if (!IsPointsGenerated) Parts.Clear(); if (this.Points != null && this.SeriesContainer != null) { CalculateMinAndMax(); ChartPoint oldPoint = new ChartPoint() { XValue = double.MinValue, YValue = double.MinValue }; IntializePoints(); for (int i = 0; i < this.Points.Count; i++) { ChartPoint point = this.Points[i]; ChartPoint step = new ChartPoint(); if (!(i == this.Points.Count - 1)) step = this.Points[i + 1]; if (CheckValuePoint(oldPoint, point)) { Point linePoint = NormalizePoint(new Point(point.XValue, point.YValue)); LinePoints.Add(linePoint); if (!(i == this.Points.Count - 1)) { Point stepPoint = NormalizePoint(new Point(point.XValue, step.YValue)); LinePoints.Add(stepPoint); } } } if (this.RenderingMode == RenderingMode.Default) { if (!IsPointsGenerated) { if (!this.UseSinglePart) { for (int i = 0; i < LinePoints.Count - 2; i++) { StepLinePart stepLinePart = new StepLinePart(LinePoints[i], LinePoints[i + 1], LinePoints[i + 2]); SetBindingForStrokeandStrokeThickness(stepLinePart); this.Parts.Add(stepLinePart); } } else { LineSinglePart stepLinePart = new LineSinglePart(); stepLinePart.LinePoints = this.LinePoints; SetBindingForStrokeandStrokeThickness(stepLinePart); this.Parts.Add(stepLinePart); } IsPointsGenerated = true; } else { int i = 0; if (!this.UseSinglePart) { foreach (StepLinePart part in this.Parts) { part.StartPoint = LinePoints[i]; part.StepPoint = LinePoints[i + 1]; part.EndPoint = LinePoints[i + 2]; part.Refresh(); i++; } } else { foreach (LineSinglePart part in this.Parts) { part.LinePoints = this.LinePoints; part.Refresh(); i++; } } } } } else { Parts.Clear(); } if (this.SeriesContainer != null) this.SeriesContainer.Invalidate(); IsRefreshed = false; }
protected PointsCollection GetPointsFromValues(List<double> xValues,List<double> yValues) { PointsCollection tempPoints = new PointsCollection(); for (int i = 0; (i < xValues.Count && i < yValues.Count); i++) { ChartPoint point = new ChartPoint() { XValue = xValues[i], YValue = yValues[i] }; tempPoints.Add(point); } return tempPoints; }
protected bool CheckValuePoint(ChartPoint oldPoint,ChartPoint point) { //point.YValue <= yMax && point.YValue >= yMin && point.XValue <= xMax && point.XValue >= xMin && if ((Math.Abs(oldPoint.XValue - point.XValue) >= xAbs || Math.Abs(oldPoint.YValue - point.YValue) >= yAbs)) return true; else return false; }
/// <summary> /// Generates the datas. /// </summary> override public void GenerateDatas() { AreaPoints.Clear(); if (!IsPointsGenerated) { Parts.Clear(); } Point endPoint; Point startPoint = new Point(0, 0); int index = 0; if (this.Points != null && this.SeriesContainer != null && this.Points.Count > 1) { CalculateMinAndMax(); ChartPoint oldPoint = new ChartPoint() { XValue = double.MinValue, YValue = double.MinValue }; IntializePoints(); AreaPoints.Add(startPoint); foreach (ChartPoint point in this.Points) { if (CheckValuePoint(oldPoint, point)) { Point linePoint = NormalizePoint(new Point(point.XValue, point.YValue)); if (index == 0) { linePoint.X = linePoint.X - this.StrokeThickness; } AreaPoints.Add(linePoint); } } if (this.RenderingMode == RenderingMode.Default) { if (!IsPointsGenerated) { for (int i = 0; i < AreaPoints.Count - 2; i++) { startPoint = NormalizePoint(new Point(this.Points[i].XValue, YMin)); endPoint = NormalizePoint(new Point(this.Points[i + 1].XValue, YMin)); AreaPart areaPart = new AreaPart(AreaPoints[i + 1], startPoint, endPoint, AreaPoints[i + 2]); SetBindingForStrokeandStrokeThickness(areaPart); this.Parts.Add(areaPart); } IsPointsGenerated = true; } else { int i = 0; foreach (AreaPart part in this.Parts) { startPoint = NormalizePoint(new Point(this.Points[i].XValue, YMin)); endPoint = NormalizePoint(new Point(this.Points[i + 1].XValue, YMin)); part.StartPoint = AreaPoints[i + 1]; part.AreaStartPoint = startPoint; part.AreaEndPoint = endPoint; part.EndPoint = AreaPoints[i + 2]; part.Refresh(); i++; } } } endPoint = NormalizePoint(new Point(this.Points[this.Points.Count - 1].XValue, YMin)); startPoint = NormalizePoint(new Point(this.Points[0].XValue, YMin)); startPoint.X = startPoint.X - this.StrokeThickness; if (AreaPoints.Count > 0) { AreaPoints[0] = startPoint; AreaPoints.Add(endPoint); } } else { Parts.Clear(); } if (this.SeriesContainer != null) { this.SeriesContainer.Invalidate(); } IsRefreshed = false; }
/// <summary> /// Generates the datas. /// </summary> public override void GenerateDatas() { BubblePoints.Clear(); if (!IsPointsGenerated) Parts.Clear(); Point endPoint = new Point(0, 0); Point startPoint = new Point(0, 0); if (PointsSource != null) SizeValues = this.GetReflectionValues(this.SizePath, PointsSource, SizeValues, false); if (this.Points != null && this.SeriesContainer != null && this.Points.Count > 0) { CalculateMinAndMax(); ChartPoint oldPoint = new ChartPoint() { XValue = double.MinValue, YValue = double.MinValue }; IntializePoints(); foreach (ChartPoint point in this.Points) { if (CheckValuePoint(oldPoint, point)) { Point linePoint = NormalizePoint(new Point(point.XValue, point.YValue)); BubblePoints.Add(linePoint); oldPoint = point; } } if (this.RenderingMode == RenderingMode.Default) { if (!IsPointsGenerated) { for (int i = 0; i < BubblePoints.Count; i++) { ScatterPart scatterPart = new ScatterPart(BubblePoints[i]); scatterPart.Size = SizeValues[i]; SetBindingForStrokeandStrokeThickness(scatterPart); this.Parts.Add(scatterPart); } IsPointsGenerated = true; } else { int i = 0; foreach (ScatterPart part in this.Parts) { part.X1 = BubblePoints[i].X; part.Y1 = BubblePoints[i].Y; part.Refresh(); i++; } } } } else { Parts.Clear(); } if (this.SeriesContainer != null) this.SeriesContainer.Invalidate(); IsRefreshed = false; }
/// <summary> /// Generates the datas. /// </summary> public override void GenerateDatas() { CalculateMinAndMax(); ChartPoint oldPoint = new ChartPoint() { XValue = double.MinValue, YValue = double.MinValue }; IntializePoints(); SplinePoints.Clear(); if (!IsPointsGenerated) Parts.Clear(); if (this.Points != null && this.SeriesContainer != null) { CalculateMinAndMax(); foreach (ChartPoint point in this.Points) { if (CheckValuePoint(oldPoint,point)) { Point linePoint = NormalizePoint(new Point(point.XValue, point.YValue)); this.SplinePoints.Add(linePoint); } } if (this.SplinePoints.Count > 1) BezierSpline.GetCurveControlPoints(this.SplinePoints.ToArray(), out FirstControlPoints, out SecondControlPoints); if (this.RenderingMode == RenderingMode.Default) { if (!IsPointsGenerated) { for (int i = 0; i < this.SplinePoints.Count - 1; i++) { SplinePart splinePart = new SplinePart(SplinePoints[i], FirstControlPoints[i], SecondControlPoints[i], SplinePoints[i + 1]); SetBindingForStrokeandStrokeThickness(splinePart); this.Parts.Add(splinePart); } IsPointsGenerated = true; } else { int i = 0; foreach (SplinePart part in this.Parts) { part.StartPoint = SplinePoints[i]; part.FirstControlPoint = FirstControlPoints[i]; part.EndControlPoint = SecondControlPoints[i]; part.EndPoint = SplinePoints[i + 1]; part.Refresh(); i++; } } } } else { Parts.Clear(); } if (this.SeriesContainer != null) this.SeriesContainer.Invalidate(); IsRefreshed = false; }
/// <summary> /// Generates the datas. /// </summary> public override void GenerateDatas() { ScatterPoints.Clear(); if (!IsPointsGenerated) { Parts.Clear(); } Point endPoint = new Point(0, 0); Point startPoint = new Point(0, 0); if (this.Points != null && this.SeriesContainer != null && this.Points.Count > 0) { CalculateMinAndMax(); ChartPoint oldPoint = new ChartPoint() { XValue = double.MinValue, YValue = double.MinValue }; IntializePoints(); foreach (ChartPoint point in this.Points) { if (CheckValuePoint(oldPoint, point)) { Point linePoint = NormalizePoint(new Point(point.XValue, point.YValue)); ScatterPoints.Add(linePoint); oldPoint = point; } } if (this.RenderingMode == RenderingMode.Default) { if (!IsPointsGenerated) { for (int i = 0; i < ScatterPoints.Count; i++) { ScatterPart scatterPart = new ScatterPart(ScatterPoints[i]); Binding sizeBinding = new Binding(); sizeBinding.Path = new PropertyPath("ScatterSize"); sizeBinding.Source = this; scatterPart.SetBinding(ScatterPart.SizeProperty, sizeBinding); SetBindingForStrokeandStrokeThickness(scatterPart); this.Parts.Add(scatterPart); } IsPointsGenerated = true; } else { int i = 0; foreach (ScatterPart part in this.Parts) { part.X1 = ScatterPoints[i].X; part.Y1 = ScatterPoints[i].Y; part.Refresh(); i++; } } } } else { Parts.Clear(); } if (this.SeriesContainer != null) { this.SeriesContainer.Invalidate(); } IsRefreshed = false; }
/// <summary> /// Generates the datas. /// </summary> public override void GenerateDatas() { ScatterPoints.Clear(); if (!IsPointsGenerated) Parts.Clear(); Point endPoint = new Point(0, 0); Point startPoint = new Point(0, 0); if (this.Points != null && this.SeriesContainer != null && this.Points.Count > 0) { CalculateMinAndMax(); ChartPoint oldPoint = new ChartPoint() { XValue = double.MinValue, YValue = double.MinValue }; IntializePoints(); foreach (ChartPoint point in this.Points) { if (CheckValuePoint(oldPoint, point)) { Point linePoint = NormalizePoint(new Point(point.XValue, point.YValue)); ScatterPoints.Add(linePoint); oldPoint = point; } } if (this.RenderingMode == RenderingMode.Default) { if (!IsPointsGenerated) { for (int i = 0; i < ScatterPoints.Count; i++) { ScatterPart scatterPart = new ScatterPart(ScatterPoints[i]); Binding sizeBinding = new Binding(); sizeBinding.Path = new PropertyPath("ScatterSize"); sizeBinding.Source = this; scatterPart.SetBinding(ScatterPart.SizeProperty, sizeBinding); SetBindingForStrokeandStrokeThickness(scatterPart); this.Parts.Add(scatterPart); } IsPointsGenerated = true; } else { int i = 0; foreach (ScatterPart part in this.Parts) { part.X1 = ScatterPoints[i].X; part.Y1 = ScatterPoints[i].Y; part.Refresh(); i++; } } } } else { Parts.Clear(); } if (this.SeriesContainer != null) this.SeriesContainer.Invalidate(); IsRefreshed = false; }
/// <summary> /// Generates the datas. /// </summary> override public void GenerateDatas() { if (Points != null && SeriesContainer != null) { LinePoints = new PointCollection(); if (!IsPointsGenerated) { Parts.Clear(); } CalculateMinAndMax(); ChartPoint oldPoint = new ChartPoint { XValue = double.MinValue, YValue = double.MinValue }; IntializePoints(); foreach (ChartPoint point in Points) { if (CheckValuePoint(oldPoint, point)) { Point linePoint = NormalizePoint(new Point(point.XValue, point.YValue)); LinePoints.Add(linePoint); oldPoint = point; } } if (RenderingMode == RenderingMode.Default) { if (!IsPointsGenerated) { if (!UseSinglePart) { for (int i = 0; i < LinePoints.Count - 1; i++) { if (CheckValue(LinePoints[i].X) && CheckValue(LinePoints[i].Y) && CheckValue(LinePoints[i + 1].X) && CheckValue(LinePoints[i + 1].Y)) { LinePart linePart = new LinePart(LinePoints[i], LinePoints[i + 1]); SetBindingForStrokeandStrokeThickness(linePart); Parts.Add(linePart); } } } else { LineSinglePart singlePart = new LineSinglePart(LinePoints); SetBindingForStrokeandStrokeThickness(singlePart); Parts.Add(singlePart); } IsPointsGenerated = true; } else { int i = 0; if (!UseSinglePart) { foreach (LinePart part in Parts) { if (CheckValue(LinePoints[i].X) && CheckValue(LinePoints[i].Y) && CheckValue(LinePoints[i + 1].X) && CheckValue(LinePoints[i + 1].Y)) { part.X1 = LinePoints[i].X; part.Y1 = LinePoints[i].Y; part.X2 = LinePoints[i + 1].X; part.Y2 = LinePoints[i + 1].Y; part.Refresh(); } i++; } } else { foreach (LineSinglePart part in Parts) { part.LinePoints = LinePoints; part.Refresh(); i++; } } } } } if (this.SeriesContainer != null) { this.SeriesContainer.Invalidate(); } IsRefreshed = false; }
/// <summary> /// Generates the datas. /// </summary> public override void GenerateDatas() { ColumnPoints.Clear(); if (this.Points != null && this.SeriesContainer != null) { if (!IsPointsGenerated) Parts.Clear(); StartEndPoints = new PointCollection(); Rects = new List<Rect>(); CalculateMinAndMax(); ChartPoint oldPoint = new ChartPoint() { XValue = double.MinValue, YValue = double.MinValue }; IntializePoints(); Point startAndEndPoint = CalculateColumnSeriesInfo(); foreach (ChartPoint point in this.Points) { if (CheckValuePoint(oldPoint, point)) { Point linePoint = NormalizePoint(new Point(point.XValue, point.YValue)); Point startPoint = NormalizePoint(new Point(point.XValue + startAndEndPoint.X, point.YValue)); Point endPoint = NormalizePoint(new Point(point.XValue + startAndEndPoint.Y, YMin)); StartEndPoints.Add(startPoint); StartEndPoints.Add(endPoint); ColumnPoints.Add(linePoint); Rects.Add(new Rect(startPoint, endPoint)); oldPoint = point; } } if (this.RenderingMode == RenderingMode.Default) { //if (!UseSinglePart) //{ if (!IsPointsGenerated) { for (int i = 0; i <= this.StartEndPoints.Count - 2; i += 2) { if (CheckValue(StartEndPoints[i].X) && CheckValue(StartEndPoints[i].Y) && CheckValue(StartEndPoints[i + 1].X) && CheckValue(StartEndPoints[i + 1].Y)) { ColumnPart columnPart = new ColumnPart(StartEndPoints[i].X, StartEndPoints[i].Y, StartEndPoints[i + 1].X, StartEndPoints[i + 1].Y); SetBindingForStrokeandStrokeThickness(columnPart); this.Parts.Add(columnPart); } //} //else //{ // LineSinglePart singlePart = new LineSinglePart(this.ColumnPoints); // SetBindingForStrokeandStrokeThickness(singlePart); // this.Parts.Add(singlePart); //} } IsPointsGenerated = true; } else { int i = 0; foreach (ColumnPart part in this.Parts) { if (CheckValue(StartEndPoints[i].X) && CheckValue(StartEndPoints[i].Y) && CheckValue(StartEndPoints[i + 1].X) && CheckValue(StartEndPoints[i + 1].Y)) { part.X1 = StartEndPoints[i].X; part.Y1 = StartEndPoints[i].Y; part.X2 = StartEndPoints[i + 1].X; part.Y2 = StartEndPoints[i + 1].Y; part.Refresh(); } i += 2; } } } } else { Parts.Clear(); } if (this.SeriesContainer != null) this.SeriesContainer.Invalidate(); IsRefreshed = false; }