다음을 통해 공유


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)