선, 곡선 및 도형에서 그림 만들기

경로를 만들려면 GraphicsPath 개체를 생성한 다음 AddLineAddCurve와 같은 메서드를 호출하여 경로에 기본 형식을 추가합니다.

다음 예제에서는 단일 호가 있는 경로를 만듭니다. 원호의 스윕 각도는 –180도이며 기본 좌표계에서 시계 반대 방향으로 표시됩니다.

Pen pen(Color(255, 255, 0, 0));
GraphicsPath path;
path.AddArc(175, 50, 50, 50, 0, -180);
graphics.DrawPath(&pen, &path);

다음 예제에서는 두 개의 그림이 있는 경로를 만듭니다. 첫 번째 그림에서는 호 뒤에 선이 있습니다. 두 번째 그림은 곡선 뒤에 선이 이어지는 선입니다. 첫 번째 그림이 열려 있고 두 번째 그림이 닫힙니다.

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

경로에 선과 곡선을 추가하는 것 외에도 사각형, 타원, 원형 및 다각형과 같은 닫힌 셰이프를 추가할 수 있습니다. 다음 예제에서는 두 줄, 사각형 및 줄임표가 있는 경로를 만듭니다. 이 코드는 펜을 사용하여 경로를 그리고 브러시를 사용하여 경로를 채웁니다.

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

앞의 예제의 경로에는 세 개의 그림이 있습니다. 첫 번째 그림은 두 줄로 구성되고, 두 번째 그림은 사각형으로 구성되고, 세 번째 그림은 타원으로 구성됩니다. GraphicsPath::CloseFigure 또는 GraphicsPath::StartFigure에 대한 호출이 없는 경우에도 직사각형 및 타원과 같은 본질적으로 닫힌 셰이프는 별도의 그림으로 간주됩니다.