[C#]做出 Print Screen 儲存螢幕畫面的功能

  • 52710
  • 0
  • 2010-08-02

在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;
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=