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 |