방법: 이미지 회전, 반사 및 기울이기

원본 이미지의 왼쪽 위, 오른쪽 위 및 왼쪽 아래 모서리에 대한 대상 점을 지정하여 이미지를 회전, 반사 및 기울일 수 있습니다. 세 개의 대상 점이 원본 사각형 이미지를 평행사변형에 매핑하는 유사 변환을 결정합니다.

예제

예를 들어, 원본 이미지는 왼쪽 위 모서리를 (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에서 사용하도록 설계되었으며 PaintEventArgs 이벤트 처리기의 매개 변수인 ePaint가 필요합니다. Stripes.bmp를 시스템에서 유효한 이미지의 경로로 바꾸세요.

참고 항목