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();
            }
        }