2011-02-17 133 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

你在哪裏希望調整後的圖像是?你有一個你實際上沒有使用的位圖,然後是一個沒有在代碼塊中定義的圖像。 – 2011-02-17 20:32:03

+0

糟糕,我誤寫了一些代碼,並複製了其他代碼,現在它不一致,謝謝指出。我會在一秒鐘內修復我的帖子。 – sooprise 2011-02-17 20:33:28

回答

6

試試這個。當您使用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); 
} 
0

是否有任何理由不能僅僅使用PictureBox控件?該控件爲您提供伸展。