다음을 통해 공유


GraphicsPath::Warp 메서드(gdipluspath.h)

GraphicsPath::Warp 메서드는 이 경로에 워프 변환을 적용합니다. GraphicsPath::Warp 메서드는 경로를 평면화(직선 시퀀스로 변환)합니다.

구문

Status Warp(
  [in]      const PointF  *destPoints,
  [in]      INT           count,
  [in, ref] const RectF & srcRect,
  [in]      const Matrix  *matrix,
  [in]      WarpMode      warpMode,
  [in]      REAL          flatness
);

매개 변수

[in] destPoints

형식: const PointF*

srcRect 매개 변수와 함께 워프 변환을 정의하는 점 배열에 대한 포인터입니다.

[in] count

형식: INT

destPoints 배열의 점 수를 지정하는 정수입니다. 이 매개 변수의 값은 3 또는 4여야 합니다.

[in, ref] srcRect

형식: const RectF

destPoints 매개 변수와 함께 변형 변환을 정의하는 사각형에 대한 참조입니다.

[in] matrix

형식: const Matrix*

선택 사항입니다. 워프와 함께 적용할 변환을 나타내는 Matrix 개체에 대한 포인터입니다. 이 매개 변수가 NULL이면 변환이 적용되지 않습니다. 기본값은 NULL입니다.

[in] warpMode

형식: WarpMode

선택 사항입니다. 적용할 워프의 종류를 지정하는 WarpMode 열거형의 요소입니다. 기본값은 WarpModePerspective입니다.

[in] flatness

형식: REAL

선택 사항입니다. 원래 경로의 근사치에 사용되는 선 세그먼트 수에 영향을 주는 실수입니다. 작은 값은 많은 선 세그먼트가 사용되도록 지정하고, 큰 값은 몇 줄 세그먼트가 사용되도록 지정합니다. 기본값은 Gdiplusenums.h에 정의된 상수인 FlatnessDefault입니다.

반환 값

형식: 상태

메서드가 성공하면 Status 열거형의 요소인 Ok를 반환합니다.

메서드가 실패하면 Status 열거형의 다른 요소 중 하나를 반환합니다.

설명

GraphicsPath 개체는 선과 곡선을 나타내는 데이터 요소 컬렉션을 저장합니다. GraphicsPath::Warp 메서드는 이러한 데이터 요소를 선만 나타내도록 변환합니다. flatness 매개 변수는 저장된 줄 수에 영향을 줍니다. 곡선을 나타내는 원래 데이터 요소가 손실됩니다.

count 매개 변수의 값이 4이면 다음 표와 같이 변형 변환이 정의됩니다.

원본 지점 대상 점
srcRect의 왼쪽 위 모서리 destPoints[0]
srcRect의 오른쪽 위 모서리 destPoints[1]
srcRect의 왼쪽 아래 모서리 destPoints[2]
srcRect의 오른쪽 아래 모서리 destPoints[3]
 

원본 사각형과 4개의 대상 지점으로 지정된 변환은 사각형을 반드시 병렬 도형이 아닌 임의의 사분면에 매핑할 수 있습니다.

count 매개 변수의 값이 3이면 다음 표와 같이 변형 변환이 정의됩니다.

원본 지점 대상 점
srcRect의 왼쪽 위 모서리 destPoints[0]
srcRect의 오른쪽 위 모서리 destPoints[1]
srcRect의 왼쪽 아래 모서리 destPoints[2]
 

원본 사각형과 세 개의 대상 지점으로 지정된 변환은 사각형을 병렬로 매핑합니다.

예제

다음 예제에서는 GraphicsPath 개체를 만들고 닫힌 그림을 경로에 추가합니다. 이 코드는 원본 사각형과 4개의 대상 지점 배열을 지정하여 워프 변환을 정의합니다. 원본 사각형 및 대상 지점은 Warp 메서드에 전달됩니다. 코드는 경로를 두 번 그립니다. 이 경로는 뒤틀리기 전에 한 번, 뒤틀리기 전에 한 번 그립니다.


VOID WarpExample(HDC hdc)
{
   Graphics graphics(hdc);

   // Create a path.
   PointF points[] ={
      PointF(20.0f, 60.0f),
      PointF(30.0f, 90.0f),
      PointF(15.0f, 110.0f),
      PointF(15.0f, 145.0f),
      PointF(55.0f, 145.0f),
      PointF(55.0f, 110.0f),
      PointF(40.0f, 90.0f),
      PointF(50.0f, 60.0f)};

   GraphicsPath path;
   path.AddLines(points, 8);
   path.CloseFigure();

   // Draw the path before applying a warp transformation.
   Pen bluePen(Color(255, 0, 0, 255));
   graphics.DrawPath(&bluePen, &path);

   // Define a warp transformation, and warp the path.
   RectF srcRect(10.0f, 50.0f, 50.0f, 100.0f);

   PointF destPts[] = {
      PointF(220.0f, 10.0f),
      PointF(280.0f, 10.0f),
      PointF(100.0f, 150.0f),
      PointF(400.0f, 150.0f)};

   path.Warp(destPts, 4, srcRect);

   // Draw the warped path.
   graphics.DrawPath(&bluePen, &path);

   // Draw the source rectangle and the destination polygon.
   Pen blackPen(Color(255, 0, 0, 0));
   graphics.DrawRectangle(&blackPen, srcRect);
   graphics.DrawLine(&blackPen, destPts[0], destPts[1]);
   graphics.DrawLine(&blackPen, destPts[0], destPts[2]);
   graphics.DrawLine(&blackPen, destPts[1], destPts[3]);
   graphics.DrawLine(&blackPen, destPts[2], destPts[3]);
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP, Windows 2000 Professional [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 gdipluspath.h(Gdiplus.h 포함)
라이브러리 Gdiplus.lib
DLL Gdiplus.dll

추가 정보

지역을 사용하여 클리핑

경로 구성 및 그리기

경로 그라데이션 만들기

경로 평면화

Graphicspath

GraphicsPath::Flatten

GraphicsPath::Outline

GraphicsPath::Widen

행렬

경로

WarpMode