GDI+ 이미지 자르기 및 크기 조정 정보
Graphics 클래스의 DrawImage 메서드를 사용하여 이미지를 그리고 배치할 수 있습니다. DrawImage는 오버로드된 메서드이므로 인수와 함께 제공할 수 있는 여러 가지 방법이 있습니다. Graphics::D rawImage 메서드의 한 변형은 Image 개체의 주소와 Rect 개체에 대한 참조를 받습니다. 사각형은 그리기 작업의 대상을 지정합니다. 즉, 이미지를 그릴 사각형을 지정합니다. 대상 사각형의 크기가 원래 이미지의 크기와 다른 경우 대상 사각형에 맞게 이미지가 스케일링됩니다. 다음 예제에서는 동일한 이미지를 세 번 그립니다. 한 번은 크기 조정 없이, 한 번은 확장, 한 번은 압축으로 그립니다.
Bitmap myBitmap(L"Spiral.png");
Rect expansionRect(80, 10, 2 * myBitmap.GetWidth(), myBitmap.GetHeight());
Rect compressionRect(210, 10, myBitmap.GetWidth() / 2,
myBitmap.GetHeight() / 2);
myGraphics.DrawImage(&myBitmap, 10, 10);
myGraphics.DrawImage(&myBitmap, expansionRect);
myGraphics.DrawImage(&myBitmap, compressionRect);
이전 코드는 특정 파일과 함께 Spiral.png 다음 출력을 생성했습니다.
Graphics::D rawImage 메서드의 일부 변형에는 원본 사각형 매개 변수와 대상 사각형 매개 변수가 있습니다. 원본 사각형은 그릴 원본 이미지의 부분을 지정합니다. 대상 사각형은 이미지의 해당 부분을 그릴 위치를 지정합니다. 대상 사각형의 크기가 원본 사각형의 크기와 다른 경우 이미지는 대상 사각형에 맞게 크기가 조정됩니다.
다음 예제에서는 파일 Runner.jpg Bitmap 개체를 생성합니다. 전체 이미지는 스케일링 없이 (0, 0)에서 그려집니다. 그런 다음, 이미지의 작은 부분이 두 번 그려집니다. 한 번은 압축으로, 한 번은 확장으로 그려집니다.
Bitmap myBitmap(L"Runner.jpg");
// The rectangle (in myBitmap) with upper-left corner (80, 70),
// width 80, and height 45, encloses one of the runner's hands.
// Small destination rectangle for compressed hand.
Rect destRect1(200, 10, 20, 16);
// Large destination rectangle for expanded hand.
Rect destRect2(200, 40, 200, 160);
// Draw the original image at (0, 0).
myGraphics.DrawImage(&myBitmap, 0, 0);
// Draw the compressed hand.
myGraphics.DrawImage(
&myBitmap, destRect1, 80, 70, 80, 45, UnitPixel);
// Draw the expanded hand.
myGraphics.DrawImage(
&myBitmap, destRect2, 80, 70, 80, 45, UnitPixel);
다음 그림에서는 스케일링되지 않은 이미지와 압축 및 확장된 이미지 부분을 보여 줍니다.