2011-02-17 92 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控件?该控件为您提供伸展。