protected override void UpdateUIRepresentationCore()
        {
            base.UpdateUIRepresentationCore();

            Viewport2D viewport = Plotter.Viewport;
            double     deltaX   = Point1.X - Point2.X;
            double     deltaY   = Point1.Y - Point2.Y;
            double     m        = deltaY / deltaX;
            double     b        = Point1.Y - Point1.X * deltaY / deltaX;

            Func <double, double> func = x => m * x + b;

            double xMin = viewport.Visible.XMin;
            double xMax = viewport.Visible.XMax;
            Point  p1   = new Point(xMin, func(xMin)).DataToScreen(viewport.Transform);
            Point  p2   = new Point(xMax, func(xMax)).DataToScreen(viewport.Transform);

            if (direction > 0)
            {
                p1 = Point2.DataToScreen(viewport.Transform);
            }
            else
            {
                p2 = Point1.DataToScreen(viewport.Transform);
            }

            geometry.StartPoint = p1;
            geometry.EndPoint   = p2;
        }