在 C# 中擷取電腦畫面其實非常的簡單,只要幾行程式碼就可以輕鬆辦到囉!不囉嗦直接來看 Code:
程式碼
private static Bitmap bmpScreenshot;
private static Graphics gfxScreenshot;
private void button1_Click( object sender, EventArgs e)
{
bmpScreenshot = new Bitmap( Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, System.Drawing.Imaging.PixelFormat .Format32bppArgb);
gfxScreenshot = Graphics.FromImage(bmpScreenshot);
gfxScreenshot.CopyFromScreen( Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen .PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
bmpScreenshot.Save( string.Format( @"c:\test.jpg", DateTime.Now.Ticks.ToString()), System.Drawing.Imaging.ImageFormat.Png);
}
可以發現程式碼中有先擷取主要顯示器的畫面大小跟範圍,才進行畫面的擷取。有興趣知道更細節如何取得螢幕解析度及工作區域可以參考這一篇文章: [C#] 取得螢幕解析度及可工作區域。
例外狀況
之前在執行這個程式的時候有發現一個例外狀況:在 GDI+ 中發生泛型錯誤,發生錯誤的原因是因為我的路徑可能是沒有權限寫入或是沒有這個資料夾等等原因,如果你也有發生這個錯誤的話,不妨可以先修改一下圖片儲存的路徑,也許就可以解決囉~詳細原因可以參考這篇文章,我覺得寫得蠻詳細的:關於【在 GDI+ 中發生泛型錯誤】出現的時機