パスを作成するには、GraphicsPath オブジェクトを構築し、AddLine や AddCurve などのメソッドを呼び出して、そのパスにプリミティブを追加します。
次の例では、1 つの円弧を持つパスを作成します。円弧のスイープ角度は –180 度で、既定の座標系では反時計回りに設定されます。
Pen pen(Color(255, 255, 0, 0));
GraphicsPath path;
path.AddArc(175, 50, 50, 50, 0, -180);
graphics.DrawPath(&pen, &path);
次の例では、2 つの図形を含むパスを作成します。 最初の図は、円弧の後に線が続きます。 2 番目の図は、線の後に曲線が続き、その後に線が続きます。 最初の図は開いたままで、2 番目の図は閉じています。
Point points[] = {Point(40, 60), Point(50, 70), Point(30, 90)};
Pen pen(Color(255, 255, 0, 0), 2);
GraphicsPath path;
// The first figure is started automatically, so there is
// no need to call StartFigure here.
path.AddArc(175, 50, 50, 50, 0.0f, -180.0f);
path.AddLine(100, 0, 250, 20);
path.StartFigure();
path.AddLine(50, 20, 5, 90);
path.AddCurve(points, 3);
path.AddLine(50, 150, 150, 180);
path.CloseFigure();
graphics.DrawPath(&pen, &path);
パスに線と曲線を追加するだけでなく、四角形、楕円、円、多角形などの閉じた図形を追加することもできます。 次の例では、四角形と楕円の 2 本の線を含むパスを作成します。 このコードでは、ペンを使用してパスを描画し、ブラシを使用してパスを塗りつぶします。
GraphicsPath path;
Pen pen(Color(255, 255, 0, 0), 2);
SolidBrush brush(Color(255, 0, 0, 200));
path.AddLine(10, 10, 100, 40);
path.AddLine(100, 60, 30, 60);
path.AddRectangle(Rect(50, 35, 20, 40));
path.AddEllipse(10, 75, 40, 30);
graphics.DrawPath(&pen, &path);
graphics.FillPath(&brush, &path);
前の例のパスには、3 つの図があります。 最初の図は 2 本の線で構成され、2 番目の図は四角形で構成され、3 番目の図は楕円で構成されています。 GraphicsPath::CloseFigureまたは GraphicsPath::StartFigureをする呼び出しがない場合でも、四角形や楕円などの本質的に閉じた図形は別々の図と見なされます。