방법: 자동 배율 조정 없이 성능 향상
GDI+에서는 사용자가 이미지를 그릴 때 이미지 배율을 자동으로 조정할 수 있습니다. 이 경우 성능이 저하됩니다. 또한 대상 사각형의 크기를 DrawImage 메서드에 전달하여 이미지의 배율을 제어할 수 있습니다.
예를 들어, DrawImage 메서드에 대한 아래의 호출에서는 왼쪽 위 모퉁이를 (50, 30)으로 지정하고 대상 사각형은 지정하지 않았습니다.
e.Graphics.DrawImage(image, 50, 30) ' upper-left corner at (50, 30)
e.Graphics.DrawImage(image, 50, 30); // upper-left corner at (50, 30)
이 방법은 DrawImage 메서드를 호출하는 데 있어 필요한 인수의 개수가 적다는 점에서는 간편하지만 가장 효율적이지는 않습니다. GDI+에 사용되는 해상도(일반적으로 96dpi)가 Image 개체에 저장된 해상도와 다를 경우 DrawImage 메서드에 의해 이미지 배율이 조정됩니다. 예를 들어, Image 개체의 너비가 216픽셀이고 저장된 가로 해상도 값이 72dpi일 수 있습니다. 216/72는 3이므로 DrawImage에 의해 3인치의 너비가 96dpi인 해상도가 되도록 이미지 배율이 조정됩니다. 즉, DrawImage에 의해 너비가 96x3 = 288픽셀인 이미지가 표시됩니다.
사용자 화면 해상도가 96dpi와 다르더라도 GDI+에 의해 화면 해상도가 96dpi인 것처럼 이미지 배율이 조정됩니다. 다시 말해서 GDI+ Graphics 개체는 장치 컨텍스트에 연결되기 때문에 GDI+에 의해 장치 컨텍스트에 화면 해상도에 대한 쿼리가 이루어질 때 실제 화면 해상도에 관계없이 결과는 항상 96입니다. DrawImage 메서드에 대항 사각형을 지정하여 자동 배율 조정을 수행하지 않을 수 있습니다.
예제
아래 예제에서는 동일한 이미지를 두 번 그립니다. 첫 번째 이미지에서는 대상 사각형의 너비와 높이를 지정하지 않으므로 이미지의 배율이 자동으로 조정됩니다. 두 번째 이미지에서는 원래 이미지의 너비 및 높이와 동일하게 픽셀 단위로 대상 사각형의 너비와 높이를 지정합니다. 아래 그림에서는 두 번에 걸쳐 렌더링된 이미지를 보여 줍니다.
Dim image As New Bitmap("Texture.jpg")
e.Graphics.DrawImage(image, 10, 10)
e.Graphics.DrawImage(image, 120, 10, image.Width, image.Height)
Image image = new Bitmap("Texture.jpg");
e.Graphics.DrawImage(image, 10, 10);
e.Graphics.DrawImage(image, 120, 10, image.Width, image.Height);
코드 컴파일
앞의 예제는 Windows Forms에서 사용해야 하며 Paint 이벤트 처리기의 매개 변수인 PaintEventArgs e를 필요로 합니다. Texture.jpg를 시스템에서 사용할 수 있는 이미지 이름 및 경로로 바꿉니다.