private void Rerender(Canvas canvas)
        {
            Derender(canvas);
            centerX = canvas.CenterX();
            centerY = canvas.CenterY();
            points.Clear();
            walls.Clear();

            if (dataItem.Point.Count < 1) {
                return;
            }

            var pointQueue = new Queue<Models.Point>(dataItem.Point);

            var lastPoint = pointQueue.Dequeue();
            points.Add(CreatePoint(lastPoint));

            while (pointQueue.Count > 0) {
                var newPoint = pointQueue.Dequeue();
                walls.Add(CreateWall(lastPoint, newPoint));
                points.Add(CreatePoint(newPoint));
                lastPoint = newPoint;
            }

            points.First().Fill = Brushes.DarkOrange;
            points.Last().Fill = Brushes.DarkRed;

            Render(canvas);
        }