Matrix::TransformVectors(Point*,INT) 메서드(gdiplusmatrix.h)

Matrix::TransformVectors 메서드는 배열의 각 벡터에 이 행렬을 곱합니다. 이 매트릭스의 이동 요소(셋째 행)는 무시됩니다. 각 벡터는 행 행렬로 처리됩니다. 곱하기는 왼쪽의 행 행렬과 오른쪽에 이 행렬을 사용하여 수행됩니다.

구문

Status TransformVectors(
  [in, out] Point *pts,
  [in]      INT   count
);

매개 변수

[in, out] pts

형식: *

입력 시 변환할 벡터를 포함하고 출력 시 변환된 벡터를 수신하는 Point 개체의 배열에 대한 포인터입니다. 배열의 각 벡터가 변환되고(이 행렬을 곱한) 변환 결과로 업데이트됩니다.

[in] count

형식: INT

(선택 사항) 변환할 벡터 수를 지정하는 정수입니다. 기본값은 1입니다.

반환 값

형식: 상태

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

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

설명

점이 위치를 나타내는 동안 벡터는 방향과 크기가 있는 엔터티(예: 속도 또는 가속)를 나타냅니다. 따라서 선 세그먼트의 엔드포인트는 점이지만 그 차이는 해당 선 세그먼트의 길이와 방향인 벡터입니다.

벡터는 여러 가지 면에서 점과 유사합니다. 점과 마찬가지로 x 및 y 좌표로 표현되므로 GDI+는 점을 나타내는 데 사용하는 것과 동일한 클래스(PointPointF)를 사용하여 벡터를 나타냅니다. 벡터와 점 간의 미묘한 차이는 변환의 영향을 받는 방식입니다. 물리적 세계에서 좌표계의 원점을 이동하면 모든 위치 지점의 좌표가 변경되지만 속도 벡터는 변경되지 않습니다. 벡터는 크기 조정, 회전, 전단 또는 대칭 이동이 가능하지만 변환(이동)할 수는 없습니다. 따라서 아핀 변환이 벡터에 적용되면 변환 구성 요소(행렬의 마지막 행)가 무시됩니다.

예제

다음 예제에서는 벡터와 점을 만듭니다. 벡터와 점의 끝은 동일한 위치에 있습니다(100, 50). 이 코드는 Matrix 개체를 만들고 해당 요소를 초기화하여 시계 방향 회전을 나타내고 오른쪽에 100단위가 변환되도록 합니다. 이 코드는 행렬의 Matrix::TransformPoints 메서드를 호출하여 점을 변환하고 행렬의 Matrix::TransformVectors 메서드를 호출하여 벡터를 변환합니다. 전체 변환(회전 후 변환)은 지점에서 수행되지만 변환의 회전 부분만 벡터에서 수행됩니다. 변환을 나타내는 행렬의 요소는 Matrix::TransformVectors 메서드에서 무시됩니다.

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

   Pen pen(Color(255, 0, 0, 255), 7);
   pen.SetEndCap(LineCapArrowAnchor);
   SolidBrush brush(Color(255, 0, 0, 255));

   // A point and a vector, same representation but different behavior
   Point point(100, 50);
   Point vector(100, 50);

   // Draw the original point and vector in blue.
   graphics.FillEllipse(&brush, point.X - 5, point.Y - 5, 10, 10);

   graphics.DrawLine(&pen, Point(0, 0), vector);

   // Transform.
   Matrix matrix(0.8f, 0.6f, -0.6f, 0.8f, 100.0f, 0.0f);
   matrix.TransformPoints(&point);
   matrix.TransformVectors(&vector);

   // Draw the transformed point and vector in red.
   pen.SetColor(Color(255, 255, 0, 0));
   brush.SetColor(Color(255, 255, 0, 0));
   graphics.FillEllipse(&brush, point.X - 5, point.Y - 5, 10, 10);
   graphics.DrawLine(&pen, Point(0, 0), vector); 
}

요구 사항

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

참고 항목

전역 및 지역 변환

행렬

변환에 대한 매트릭스 표현

Point

TransformPoints 메서드

TransformVectors 메서드

변환