運用C#制作屏幕捕捉程序(3)
3. 代碼編寫:
先在代碼文件中添加上面介紹的BitBlt函數的外部聲明。
再添加按鈕的onClick事件處理函數,該函數就是實現屏幕捕捉的主要部分了。函數如下:
private void button1_Click(object sender, System.EventArgs e)
{
Graphics g1 = this.CreateGraphics();//獲得窗體圖形對象
Image MyImage = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height, g1);
Graphics g2 = Graphics.FromImage(MyImage);//創建位圖圖形對象
IntPtr dc1 = g1.GetHdc();//獲得窗體的上下文設備
IntPtr dc2 = g2.GetHdc();//獲得位圖文件的上下文設備
BitBlt(dc2, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, dc1, 0, 0, 13369376);//寫入到位圖
g1.ReleaseHdc(dc1);//釋放窗體的上下文設備
g2.ReleaseHdc(dc2);//釋放位圖文件的上下文設備
MyImage.Save(@"c:Captured.jpg", ImageFormat.Jpeg);//保存為jpeg文件
MessageBox.Show("保存圖片結束!");
}
4.到此為止,程序已經做完了。按Ctrl+F5可以試試效果如下圖:
圖片已經保存好了,看看屏幕捕捉的結果吧(如下圖)!
不過,這個程序只是捕捉到了程序自身的客戶區,所以功能有限。當然,你也可以試著做個捕捉屏幕任何位置的程序!你只要改變源圖像的寬度和高度即可,而這個寬度和高度當然可以由用戶來選定。這樣,一個自制的屏幕捕捉程序就出爐了。
從上面的實例中,我們不難發現用C#編程實現一些基本功能還是非常容易的,真可謂是高效開發的好工具。所以,筆者希望有更多的人加入C#的行列,開發出更實用、更完善的軟件。