다음을 통해 공유


System.Drawing.Drawing2D.Matrix 클래스

이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.

클래스는 Matrix 기하학적 변환을 나타내는 3-by-3 아핀 행렬을 캡슐화합니다.

GDI+에서는 개체에 아핀 변환을 Matrix 저장할 수 있습니다. 아핀 변환을 나타내는 행렬의 세 번째 열은 항상 (0, 0, 1)이므로, Matrix 개체를 생성할 때 처음 두 열의 6개 숫자만 지정합니다. 이 문 Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) 은 다음 그림에 표시된 행렬을 생성합니다.

행렬.

참고 항목

.NET 6 이상 버전 에서는 이 형식을 포함하는 System.Drawing.Common 패키지가 Windows 운영 체제에서만 지원됩니다. 플랫폼 간 앱에서 이 형식을 사용하면 컴파일 시간 경고 및 런타임 예외가 발생합니다. 자세한 내용은 Windows에서만 지원되는 System.Drawing.Common을 참조 하세요.

복합 변환

복합 변환은 변환 시퀀스이며, 순서대로 되어 있습니다. 다음 목록의 행렬 및 변환을 고려합니다.

행렬 변환
행렬 A 90도 회전
행렬 B x 방향에서 2 배율로 크기 조정
행렬 C y 방향으로 3단위 이동

행렬 [2 1 1]로 표현되는 점(2, 1)으로 시작하고 A, B, C를 곱하면 점(2, 1)은 나열된 순서대로 세 가지 변환을 거칩니다.

[2 1 1]ABC = [-2 5 1]

복합 변환의 세 부분을 별도의 세 행렬에 저장하는 대신, A, B 및 C를 함께 곱하여 전체 복합 변환을 저장하는 단일 3×3 행렬을 가져올 수 있습니다. ABC = D을 가정해 보겠습니다. 그런 다음 D를 곱한 점이 A, B, C를 곱한 점과 동일한 결과를 제공합니다.

[2 1 1]D = [-2 5 1]

다음 그림에서는 행렬 A, B, C 및 D를 보여줍니다.

행렬 A, B, C 및 D

복합 변환의 행렬이 개별 변환 행렬을 곱하여 형성될 수 있다는 사실은 모든 아핀 변환 시퀀스를 단일 Matrix 개체에 저장할 수 있음을 의미합니다.

주의

복합 변환의 순서는 중요합니다. 일반적으로, 회전, 스케일링, 이동 순서는 스케일링, 회전, 이동 순서와 같지 않습니다. 마찬가지로, 행렬 곱하기 순서도 중요합니다. 일반적으로 ABC는 BAC와 동일하지 않습니다.

Matrix 클래스는 복합 변환을 빌드하기 위한 여러 메서드, Multiply, Rotate, RotateAt, Scale, ShearTranslate를 제공합니다. 다음 예제에서는 먼저 30도 회전한 다음, y 방향으로 배율 2로 스케일링한 다음, x 방향으로 5 단위를 이동하는 복합 변환의 행렬을 만듭니다.

Matrix myMatrix = new Matrix();
myMatrix.Rotate(30);
myMatrix.Scale(1, 2, MatrixOrder.Append);
myMatrix.Translate(5, 0, MatrixOrder.Append);
Dim myMatrix As New Matrix()
myMatrix.Rotate(30)
myMatrix.Scale(1, 2, MatrixOrder.Append)
myMatrix.Translate(5, 0, MatrixOrder.Append)