private void AddPoint(Polyline line, Point point) { line.Points.Add(point); //offset line if too long double offset = MaxWidth / 10; if (line.Points.Last().X > MaxWidth) { line.BeginInit(); //for (int i = 0; i < offset; i++) //line.Points.RemoveAt(0); List<Point> newPoints = line.Points.Select(cur => new Point(cur.X - offset, cur.Y)).ToList(); line.Points.Clear(); foreach (var p in newPoints) line.Points.Add(p); line.EndInit(); } }
private void UpdateNumberBalances(Polyline polyline, int newPointY) { Point curPoint = new Point(polyline.Points.Count, newPointY); polyline.Points.Add(curPoint); //offset line if too long var maxItemCount = MainWindow.NumberBalancesCanvasWidth; double offset = maxItemCount / 10; if (polyline.Points.Count >= maxItemCount) { polyline.BeginInit(); for (int i = 0; i < offset; i++) polyline.Points.RemoveAt(0); List<Point> newPoints = polyline.Points.Select(cur => new Point(cur.X - offset, cur.Y)).ToList(); polyline.Points.Clear(); foreach (var point in newPoints) polyline.Points.Add(point); polyline.EndInit(); } }