다음을 통해 공유


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

원본 이미지의 왼쪽 위, 오른쪽 위 및 왼쪽 아래 모서리에 대한 대상 지점을 지정하여 이미지를 회전, 반사 및 기울이기할 수 있습니다. 세 대상 지점은 원래 사각형 이미지를 병렬 프로그래밍에 매핑하는 아핀 변환을 결정합니다.

예시

예를 들어 원본 이미지가 왼쪽 위 모서리(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를 시스템에서 유효한 이미지의 경로로 바꾸세요.

참고하십시오