private void Draw(DrawingSettings drSet) { if (context == null) { return; } if (drSet.drawingObject is MathFunction) { MathFunction func = drSet.drawingObject as MathFunction; Tuple <double, double>[] continuousRegions = func.ContinuousRegions(minX, maxX, minY, maxY); foreach (Tuple <double, double> region in continuousRegions) { PointF[] points = PointsForFunction(func, region.Item1, region.Item2); context.DrawLines(new Pen(drSet.borderColor, drSet.borderWidth), points); } } else if (drSet.drawingObject is GraphicsPath) { GraphicsPath path = drSet.drawingObject as GraphicsPath; context.FillPath(drSet.brush, path); context.DrawPath(new Pen(drSet.borderColor, drSet.borderWidth), path); } }