다음을 통해 공유


경로(GDI+)

경로는 선, 사각형, 단순 곡선을 결합하여 형성됩니다. 벡터 그래픽 개요에서 다음 기본 구성 요소는 그림을 그리는 데 가장 유용한 것으로 입증되었습니다.

  • 사각형
  • 타원
  • 원호
  • 다각형
  • 카디널 스플라인
  • 베지어 스플라인

Windows GDI+에서 GraphicsPath 개체를 사용하면 이러한 구성 요소의 시퀀스를 단일 단위로 수집할 수 있습니다. 그런 다음 Graphics 클래스의 Graphics::D rawPath 메서드를 한 번 호출하여 선, 사각형, 다각형 및 곡선의 전체 시퀀스를 그릴 수 있습니다 . 다음 그림에서는 선, 호, 베지어 스플라인, 카디널 스플라인을 결합하여 만든 경로를 보여 줍니다.

선, 호, 베지어 스플라인 및 카디널 스플라인을 결합하는 경로 그림

GraphicsPath 클래스는 그릴 항목 시퀀스를 만드는 메서드인 AddLine, AddRectangle, AddEllipse, AddArc, AddPolygon, AddCurve(카디널 스플라인의 경우) 및 AddBezier를 제공합니다. 이러한 각 메서드는 오버로드됩니다. 즉, 각 메서드는 서로 다른 매개 변수 목록을 사용하여 여러 변형으로 제공됩니다. 예를 들어 AddLine 메서드의 한 변형은 4개의 정수를 수신하고 다른 변형 AddLine 메서드는 두 개의 Point 개체를 받습니다.

경로에 선, 사각형 및 베지어 스플라인을 추가하는 메서드에는 단일 호출에서 경로에 여러 항목을 추가하는 복수 도우미 메서드인 AddLines, AddRectanglesAddBeziers가 있습니다. 또한 AddCurve 메서드에는 경로에 닫힌 곡선을 추가하는 도우미 메서드 AddClosedCurve가 있습니다.

경로를 그리려면 Graphics 개체, Pen 개체 및 GraphicsPath 개체가 필요합니다. Graphics 개체는 Graphics::D rawPath 메서드를 제공하며 Pen 개체는 경로의 특성(예: 선 너비 및 색)을 저장합니다. GraphicsPath 개체는 경로를 구성하는 선, 사각형 및 곡선의 시퀀스를 저장합니다. Pen 개체 및 GraphicsPath 개체의 주소는 Graphics::D rawPath 메서드에 인수로 전달됩니다. 다음 예제에서는 선, 타원 및 Bézier 스플라인으로 구성된 경로를 그립니다.

myGraphicsPath.AddLine(0, 0, 30, 20);
myGraphicsPath.AddEllipse(20, 20, 20, 40);
myGraphicsPath.AddBezier(30, 60, 70, 60, 50, 30, 100, 10);
myGraphics.DrawPath(&myPen, &myGraphicsPath);

다음 그림은 경로를 보여 줍니다.

선, 타원 및 베지어 스플라인으로 구성된 경로 그림

경로에 선, 사각형, 곡선을 추가하는 것 외에도 경로에 경로를 추가할 수 있습니다. 이렇게 하면 기존 경로를 결합하여 크고 복잡한 경로를 형성할 수 있습니다. 다음 코드는 myGraphicsPath에 graphicsPath1graphicsPath2 를 추가 합니다. GraphicsPath::AddPath 메서드의 두 번째 매개 변수는 추가된 경로가 기존 경로에 연결되어 있는지 여부를 지정합니다.

myGraphicsPath.AddPath(&graphicsPath1, FALSE);
myGraphicsPath.AddPath(&graphicsPath2, TRUE);

경로에 추가할 수 있는 다른 두 항목은 문자열과 원형입니다. 원형은 타원의 내부 부분입니다. 다음 예제에서는 호, 카디널 스플라인, 문자열 및 원형에서 경로를 만듭니다.

myGraphicsPath.AddArc(0, 0, 30, 20, -90, 180);
myGraphicsPath.AddCurve(myPointArray, 3);
myGraphicsPath.AddString(L"a string in a path", 18, &myFontFamily, 
   0, 24, myPointF, &myStringFormat);
myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110);
myGraphics.DrawPath(&myPen, &myGraphicsPath);

다음 그림은 경로를 보여 줍니다. 경로를 연결할 필요는 없습니다. 호, 카디널 스플라인, 문자열, 원형은 구분됩니다.

연결이 끊긴 선으로 구성된 경로 그림: 호, 카디널 스플라인, 문자열 및 원형