我想在Winform上截取我的控件截图。我使用此功能 - 在此站点中找到:
public void GetImage()
{
var bm = new Bitmap(display1.Width, display1.Height);
display1.DrawToBitmap(bm, display1.ClientRectangle);
bm.Save(@"c:\whatever.gif", ImageFormat.Gif);
}
但是当我使用它时,我在System.Drawing.dll中有一个关于'System.Runtime.InteropServices.ExternalException'的错误:GDI +中发生了一般错误。
你有任何想法吗? 谢谢!
---------------------- EDIT ------------------------ ---
好的,我改变了我的功能:
public void GetImage()
{
var bm = new Bitmap(display1.Width, display1.Height);
display1.DrawToBitmap(bm, display1.ClientRectangle);
var dlg = new SaveFileDialog { DefaultExt = "png", Filter = "Png Files|*.png" };
var res = dlg.ShowDialog();
if (res == DialogResult.OK) bm.Save(dlg.FileName, ImageFormat.Png);
}
它有效,但我现在有一张空白的照片:/
答案 0 :(得分:0)
尝试以下方法: 假设display1是一个Rectangle,它限定了你想要捕获的显示区域。
public void GetImage()
{
Rectangle display1 = this.Bounds; // winforms control bounds
// for full screen use "= Screen.GetBounds(Point.Empty);
var bm = new Bitmap(display1.Width, display1.Height);
//display1.DrawToBitmap(bm, display1.ClientRectangle);
Graphics g = Graphics.FromImage(bm);
g.CopyFromScreen(new Point(display1.Left, display1.Top), Point.Empty, display1.Size);
var dlg = new SaveFileDialog { DefaultExt = "png", Filter = "Png Files|*.png" };
var res = dlg.ShowDialog();
if (res == DialogResult.OK) bm.Save(dlg.FileName, ImageFormat.Png);
}