在Windows的功能中,有個按鍵 Print Screen 可以將目前螢幕畫面儲存,針對此項功能,希望能透過C#來撰寫一個小程式,來達成將螢幕畫面儲存成圖檔以及將Form的畫面儲存成圖檔
在Windows的功能中,有個按鍵 Print Screen 可以將目前螢幕畫面儲存,針對此項功能,希望能透過C#來撰寫一個小程式,有兩個功能
1. 當使用者按下Burron1時,可以將螢幕畫面儲存成圖檔
2. 當使用者按下Button2時,可以將Form儲存起來
參考了網路上相關的文章,常看到透過 gdi32.dll 來達成此功能,不過其實可以透過 Graphics 中的 CopyFromScreen 來達成
有興趣的可以參考MSDN中的說明
http://msdn.microsoft.com/en-us/library/system.drawing.graphics.copyfromscreen.aspx
以下為程式碼
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace PrintScreen
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Bitmap myImage = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(myImage);
g.CopyFromScreen(new Point(0,0), new Point(0, 0), new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height));
IntPtr dc1 = g.GetHdc();
g.ReleaseHdc(dc1);
myImage.Save(@"c:\screen0.jpg");
}
private void button2_Click(object sender, EventArgs e)
{
Bitmap myImage = new Bitmap(this.Width, this.Height);
Graphics g = Graphics.FromImage(myImage);
g.CopyFromScreen(new Point(this.Location.X, this.Location.Y), new Point(0, 0), new Size(this.Width, this.Height));
IntPtr dc1 = g.GetHdc();
g.ReleaseHdc(dc1);
myImage.Save(@"c:\screen1.jpg");
}
}
}
執行結果
參考
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20090302221139VWI&fumcde=
2009/03/02 補充
更加進階的功能可以參考在CodeProject的這兩個程式
http://www.codeproject.com/KB/graphics/ScreenCaptureByHolzhauer.aspx
http://www.codeproject.com/KB/graphics/screen_capturing.aspx
P.S. 對WebForm Client端相同擷取功能有興趣也可以參考這篇問答
擷取螢幕並存成圖片 webForm
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20090310124028ZUG&fumcde=