2011-02-17 6 views
4

화면에서 이미지를 복사 한 후 크기를 조정하려고 했으므로 이미지를 처리하는 방법을 알 수 없습니다. 내가 읽은 튜토리얼은 Graphics.DrawImage를 사용하여 이미지 크기를 조정하는 것이 좋지만이 코드를 실행하면 크기가 조정되지 않습니다.그래픽에서 이미지 크기를 조정 하시겠습니까?

Bitmap b = new Bitmap(control.Width, control.Height); 
Graphics g = Graphics.FromImage(b); 
g.CopyFromScreen(control.Parent.RectangleToScreen(control.Bounds).X, control.Parent.RectangleToScreen(control.Bounds).Y, 0, 0, new Size(control.Bounds.Width, control.Bounds.Height), CopyPixelOperation.SourceCopy); 

g.DrawImage(b, 0,0,newWidth, newHeight); 

감사합니다. 감사합니다.

+0

은 어디에서 크기가 조정 된 이미지가되기를 바라고있다? 실제로 사용하지 않는 비트 맵과 코드 블록에 정의되지 않은 이미지가 있습니다. –

+0

죄송합니다. 일부 코드를 잘못 작성하여 다른 코드를 복사했습니다. 지금은 일관성이 없습니다. 지적 해 주셔서 감사합니다. 내 게시물을 잠시 후에 고칠 것입니다. – sooprise

답변

6

시도해보십시오. Graphics는 DrawImage를 사용할 때 이미지를 "대체"하지 않습니다. 그리기를 시도하는 이미지와 동일한 소스에 입력 이미지를 그립니다. 아마

이 있지만, 할 수있는보다 간결 방법

.....

Bitmap b = new Bitmap(control.Width, control.Height); 
using (Graphics g = Graphics.FromImage(b)) { 
    g.CopyFromScreen(control.Parent.RectangleToScreen(control.Bounds).X, 
     control.Parent.RectangleToScreen(control.Bounds).Y, 0, 0, 
     new Size(control.Bounds.Width, control.Bounds.Height), 
     CopyPixelOperation.SourceCopy); 
} 
Bitmap output = new Bitmap(newWidth, newHeight); 
using (Graphics g = Graphics.FromImage(output)) { 
    g.DrawImage(b, 0,0,newWidth, newHeight); 
} 
+1

일부 '사용'블록이 필요합니다. 'Graphics' 객체는 처리해야합니다. 'g'가 처리 될 때까지'b'에 아무 것도 없을 수도 있습니다. –

+0

하하, 그리고 나는 데이터 어드레더와 관련이있는 다른 질문에 "사용"하는 덕목에 대해 칭찬하고있었습니다. 당신은 정확합니다, 업데이트되었습니다. –

+0

블록을 사용하면 그래픽 객체에서 여전히 처분해야합니까? – sooprise

0

PictureBox 컨트롤을 사용할 수없는 이유는 무엇입니까? 그 통제는 당신을 위해 스트레칭을 처리합니다.

관련 문제