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