방법: 이미지 회전, 반사 및 기울이기
원본 이미지의 왼쪽 위, 오른쪽 위 및 왼쪽 아래 모서리에 대한 대상 점을 지정하여 이미지를 회전, 반사 및 기울일 수 있습니다. 세 개의 대상 점이 원본 사각형 이미지를 평행사변형에 매핑하는 유사 변환을 결정합니다.
예제
예를 들어, 원본 이미지는 왼쪽 위 모서리를 (0, 0)에, 오른쪽 위 모서리를 (100, 0)에, 그리고 왼쪽 아래 모서리를 (0, 50)에 둔 사각형이라고 가정합니다. 이제 다음과 같이 이러한 세 개의 점을 대상 점에 매핑한다고 가정합니다.
원본 점 | 대상 점 |
---|---|
왼쪽 위(0, 0) | (200, 20) |
오른쪽 위(100, 0) | (110, 100) |
왼쪽 아래(0, 50) | (250, 30) |
다음 그림은 원본 이미지와 평행 사변형에 매핑된 이미지를 보여줍니다. 원본 이미지는 기울어지고, 반전되고, 회전되고, 평행이동되었습니다. 원본 이미지의 상단 모서리를 따르는 x-축은 (200, 20)과 (110, 100)을 통과하는 선에 매핑됩니다. 원본 이미지의 왼쪽 모서리를 따르는 y-축은 (200, 20)과 (250, 30)을 통과하는 선에 매핑됩니다.
다음 그림에서는 사진 이미지에 적용된 유사한 변환을 보여줍니다.
다음 그림은 메타파일에 적용된 유사한 변환을 보여줍니다.
다음 예제는 첫 번째 그림에 나타난 이미지를 생성합니다.
Point[] destinationPoints = {
new Point(200, 20), // destination for upper-left point of
// original
new Point(110, 100), // destination for upper-right point of
// original
new Point(250, 30)}; // destination for lower-left point of
// original
Image image = new Bitmap("Stripes.bmp");
// Draw the image unaltered with its upper-left corner at (0, 0).
e.Graphics.DrawImage(image, 0, 0);
// Draw the image mapped to the parallelogram.
e.Graphics.DrawImage(image, destinationPoints);
' New Point(200, 20) = destination for upper-left point of original
' New Point(110, 100) = destination for upper-right point of original
' New Point(250, 30) = destination for lower-left point of original
Dim destinationPoints As Point() = { _
New Point(200, 20), _
New Point(110, 100), _
New Point(250, 30)}
Dim image As New Bitmap("Stripes.bmp")
' Draw the image unaltered with its upper-left corner at (0, 0).
e.Graphics.DrawImage(image, 0, 0)
' Draw the image mapped to the parallelogram.
e.Graphics.DrawImage(image, destinationPoints)
코드 컴파일
앞의 예는 Windows Forms에서 사용하도록 설계되었으며 Paint 이벤트 처리기의 매개 변수인 PaintEventArgs e
가 필요합니다. Stripes.bmp
를 시스템에서 유효한 이미지의 경로로 바꾸세요.
참고 항목
.NET Desktop feedback