다음을 통해 공유


경로(GDI+)

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

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

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

선, 호, 베지어 스플라인 및 카디널 스플라인그림

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

경로에 선, 사각형 및 Bézier 스플라인을 추가하는 메서드에는 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);

다음 그림에서는 경로를 보여 줍니다.

선, 줄임표 및 베지어 스플라인그림

경로에 선, 사각형 및 곡선을 추가하는 것 외에도 경로에 경로를 추가할 수 있습니다. 이렇게 하면 기존 경로를 결합하여 크고 복잡한 경로를 형성할 수 있습니다. 다음 코드는 graphicsPath1graphicsPath2 myGraphicsPath 추가합니다. 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);

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

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