Creating Figures from Lines, Curves, and Shapes

To create a path, construct a GraphicsPath object, and then call methods, such as AddLine and AddCurve, to add primitives to the path.

The following example creates a path that has a single figure. The figure consists of a single arc. The arc has a sweep angle of 180 degrees, which is counterclockwise in the default coordinate system.

Dim path As New GraphicsPath()
path.AddArc(175, 50, 50, 50, 0, - 180)
e.Graphics.DrawPath(New Pen(Color.FromArgb(128, 255, 0, 0), 4), path)
[C#]
GraphicsPath path = new GraphicsPath();
path.AddArc(175, 50, 50, 50, 0, -180);
e.Graphics.DrawPath(new Pen(Color.FromArgb(128, 255, 0, 0), 4), path);

The following example creates a path that has two figures. The first figure is an arc followed by a line. The second figure is a line followed by a curve followed by a line. The first figure is left open, and the second figure is closed.

' Create an array of points for the curve in the second figure.
Dim points As Point() =  { _
   New Point(40, 60), _
   New Point(50, 70), _
   New Point(30, 90)}
      
Dim path As New GraphicsPath()
      
path.StartFigure() ' Start the first figure.
path.AddArc(175, 50, 50, 50, 0, - 180)
path.AddLine(100, 0, 250, 20)
' First figure is not closed.

path.StartFigure() ' Start the second figure.
path.AddLine(50, 20, 5, 90)
path.AddCurve(points, 3)
path.AddLine(50, 150, 150, 180)
path.CloseFigure() ' Second figure is closed.
e.Graphics.DrawPath(New Pen(Color.FromArgb(255, 255, 0, 0), 2), path)
[C#]
// Create an array of points for the curve in the second figure.
Point[] points = {
   new Point(40, 60),
   new Point(50, 70),
   new Point(30, 90)};

GraphicsPath path = new GraphicsPath();

path.StartFigure(); // Start the first figure.
path.AddArc(175, 50, 50, 50, 0, -180);
path.AddLine(100, 0, 250, 20);
// First figure is not closed.

path.StartFigure(); // Start the second figure.
path.AddLine(50, 20, 5, 90);
path.AddCurve(points, 3);
path.AddLine(50, 150, 150, 180);
path.CloseFigure(); // Second figure is closed.

e.Graphics.DrawPath(new Pen(Color.FromArgb(255, 255, 0, 0), 2), path);