GDI+에서 이미지 자르기 및 배율 조정
업데이트: 2007년 11월
Graphics 클래스의 DrawImage 메서드를 사용하여 벡터 이미지와 래스터 이미지를 그리고 위치를 지정할 수 있습니다. DrawImage는 오버로드된 메서드이므로 여러 가지 방법으로 여기에 인수를 제공할 수 있습니다.
DrawImage의 변형 메서드
DrawImage 메서드에서 변형된 메서드는 Bitmap 개체와 Rectangle 개체를 받습니다. 사각형은 그리기 작업의 대상 위치를 지정합니다. 즉 이미지를 그릴 사각형 영역을 지정합니다. 대상 사각형이 원래의 이미지 크기와 다르면 이미지는 대상 사각형에 맞도록 크기가 조절됩니다. 다음 코드 예제에서는 같은 이미지를 세 번 그립니다. 이 때 배율 조정을 하지 않은 경우, 배율을 확대한 경우 및 배율을 축소한 경우와 같이 모두 세 가지 방법을 보여 줍니다.
Dim myBitmap As New Bitmap("Spiral.png")
Dim expansionRectangle As New Rectangle(135, 10, _
myBitmap.Width, myBitmap.Height)
Dim compressionRectangle As New Rectangle(300, 10, _
CType(myBitmap.Width / 2, Integer), CType(myBitmap.Height / 2, Integer))
myGraphics.DrawImage(myBitmap, 10, 10)
myGraphics.DrawImage(myBitmap, expansionRectangle)
myGraphics.DrawImage(myBitmap, compressionRectangle)
Bitmap myBitmap = new Bitmap("Spiral.png");
Rectangle expansionRectangle = new Rectangle(135, 10,
myBitmap.Width, myBitmap.Height);
Rectangle compressionRectangle = new Rectangle(300, 10,
myBitmap.Width / 2, myBitmap.Height / 2);
myGraphics.DrawImage(myBitmap, 10, 10);
myGraphics.DrawImage(myBitmap, expansionRectangle);
myGraphics.DrawImage(myBitmap, compressionRectangle);
다음 그림은 세 그림을 보여 줍니다.
DrawImage 메서드의 변형 메서드 중 일부는 대상 사각형 매개 변수와 원본 사각형 매개 변수를 사용합니다. 원본 사각형 매개 변수는 그리려는 원본 이미지 부분을 지정합니다. 대상 사각형은 이러한 이미지 부분을 그릴 사각형 영역을 지정합니다. 대상 사각형의 크기가 원본 사각형의 크기와 다르면 그림은 대상 사각형에 맞도록 크기가 조절됩니다.
다음 코드 예제에서는 Runner.jpg 파일에서 Bitmap을 만드는 방법을 보여 줍니다. 이 때 배율을 조정하지 않은 상태로 (0, 0) 위치에 전체 이미지를 그립니다. 그런 다음 작은 이미지 부분을 두 번 그립니다. 한 번은 축소하여 그리고, 한 번은 확대하여 그립니다.
Dim myBitmap As New Bitmap("Runner.jpg")
' One hand of the runner
Dim sourceRectangle As New Rectangle(80, 70, 80, 45)
' Compressed hand
Dim destRectangle1 As New Rectangle(200, 10, 20, 16)
' Expanded hand
Dim destRectangle2 As New Rectangle(200, 40, 200, 160)
' Draw the original image at (0, 0).
myGraphics.DrawImage(myBitmap, 0, 0)
' Draw the compressed hand.
myGraphics.DrawImage( _
myBitmap, destRectangle1, sourceRectangle, GraphicsUnit.Pixel)
' Draw the expanded hand.
myGraphics.DrawImage( _
myBitmap, destRectangle2, sourceRectangle, GraphicsUnit.Pixel)
Bitmap myBitmap = new Bitmap("Runner.jpg");
// One hand of the runner
Rectangle sourceRectangle = new Rectangle(80, 70, 80, 45);
// Compressed hand
Rectangle destRectangle1 = new Rectangle(200, 10, 20, 16);
// Expanded hand
Rectangle destRectangle2 = new Rectangle(200, 40, 200, 160);
// Draw the original image at (0, 0).
myGraphics.DrawImage(myBitmap, 0, 0);
// Draw the compressed hand.
myGraphics.DrawImage(
myBitmap, destRectangle1, sourceRectangle, GraphicsUnit.Pixel);
// Draw the expanded hand.
myGraphics.DrawImage(
myBitmap, destRectangle2, sourceRectangle, GraphicsUnit.Pixel);
다음 그림은 크기 조절하지 않은 이미지와 축소 및 확대한 이미지 부분을 보여 줍니다.