2009-06-17 137 views

回答

8

Graphics.CopyFromScreen(..)方法應該做你需要的。

這裏有一個很好的示例中,我發現在網絡上:

http://www.geekpedia.com/tutorial181_Capturing-screenshots-using-Csharp.html

編輯:代碼示例:(我創建它作爲一個擴展方法)

public static class FormExtensions 
{ 
    public static void SaveAsImage(this Form form, string fileName, ImageFormat format) 
    { 
     var image = new Bitmap(form.Width, form.Height); 
     using (Graphics g = Graphics.FromImage(image)) 
     { 
      g.CopyFromScreen(form.Location, new Point(0, 0), form.Size); 
     } 
     image.Save(fileName, format); 
    } 
} 

可用於:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     this.SaveAsImage("foo.bmp", ImageFormat.Bmp); 
    } 
} 
+0

非常好!我發現了一個不太簡潔的解決方案,該解決方案也適用於 http://www.dotnetcurry.com/ShowArticle.aspx?ID=303 我通過用此替換Screen.PrimaryScreen來修改PrintScreen方法。謝謝。 – Blanthor 2009-06-17 18:14:09

0

如果你真的想剛纔的對話框中,使用Control.DrawToBitmap從它那裏得到一個BMP圖像。