2010-04-16 4 views
1

누락 된 것이 있습니다. 다음 코드를 가지고 있다고 가정 해 보겠습니다.GDI + DrawImage 함수

private Bitmap source = new Bitmap (some_stream); 
Bitmap bmp = new Bitmap(100,100); 
Rectangle newRect = new Rectangle(0, 0, bmp.Width, bmp.Height); 
Rectangle toZoom= new Rectangle(0, 0, 10, 10); 

Graphics g = Graphics.FromImage(bmp); 
g.DrawImage(source, newRect, toZoom, GraphicsUnit.Pixel); 

내 목표는 원본 그림의 왼쪽 상단 구석에있는 10x10 픽셀을 확대하는 것입니다. 그래픽 객체 g를 만들고 DrawImage를 호출하면 요청 된 사각형 (toZoom)이 bmp에 복사되거나 화면에 표시됩니까? 나는 약간 혼란 스럽다.

답변

1

코드는 메모리에있는 비트 맵 (화면에 자동으로 표시되지 않음) 만 제공합니다. 이를 표시하는 간단한 방법은 양식에 100 × 100 PictureBox를 넣어 (위의 코드에서 Bitmap 사용)과 같이 그 Image 속성을 설정하는 것입니다 : 또한

pictureBox1.Image = bmp; 

, 당신은 몇 가지를 할 것입니다 코드에서 using 블록 : bmp 아무 using 블록이 없음을

using (private Bitmap source = new Bitmap (some_stream)) 
{ 
    Bitmap bmp = new Bitmap(100,100); 
    Rectangle newRect = new Rectangle(0, 0, bmp.Width, bmp.Height); 
    Rectangle toZoom= new Rectangle(0, 0, 10, 10); 
    using (Graphics g = Graphics.FromImage(bmp)) 
    { 
     g.DrawImage(source, newRect, toZoom, GraphicsUnit.Pixel); 
    } 
    pictureBox1.Image = bmp; 
} 

주 -의 PictureBox의 이미지 속성으로 설정하고 있기 때문에 이것이이. using 블록은 블록의 범위 끝에있는 개체의 Dispose 메서드를 자동으로 호출합니다.이 메서드는 여전히 사용 중이므로 사용하지 않으려는 것입니다.

0

복사되어 표시되지 않습니다.