1. 程式人生 > >螢幕截圖的實現和原始碼

螢幕截圖的實現和原始碼

最近打算寫一些入門相關的小應用程式開發例項,個人感覺學習程式開發,其關鍵的一步就是閱讀原始碼(RTFSC,呵呵),然後嘗試自己動手編寫。這裡所謂的自己動手編寫並不是讓你照著原始碼一句話一句的敲,也不是複製貼上,而是閱讀了原始碼以後,學習其中的程式設計思想,然後加以應用,寫出自己的程式,你可以在你閱讀的原始碼上增加功能或優化程式碼,或者就是在完全不看原始碼的情況下,實現相同的功能。如果想學好程式開發,一定要強迫自己做到這樣。

接下來是一個螢幕截圖小工具的例項,當初做這個小工具是因為公司不能連線Internet,平時我都是用QQ截圖,後來公司沒有安裝,於是自己編寫了一個螢幕截圖小工具,也是第一次正式用C++編寫應用程式。

該程式的流程相當簡單:

1.快捷鍵按下後啟動截圖功能,這裡需要用全域性鍵盤鉤子來捕獲鍵盤輸入。

2.獲取解析度後,將螢幕截圖(原始截圖)拷貝到記憶體當中。

3.拷貝一份螢幕截圖,並且轉換為灰度圖。

4.拷貝灰度圖到顯示裝置當中。

5.獲取滑鼠選擇區域,並繪製矩形框,將原圖當中,滑鼠框選部分截圖拷貝到顯示裝置當中。

6.獲取使用者輸入,如果是ESC,則重複步驟4,如果是雙擊或者Enter按下,則將框選部分的原圖拷貝的剪貼簿中,並釋放資源,退出截圖。

上面的流程便實現了螢幕截圖的基礎功能,啟動截圖後,螢幕變為灰色,滑鼠選中部分為彩色,然後確定截圖,在C++的原始碼中,我加入了系統托盤。

原始碼兩個,一個是CPP的實現版本,一個是C#的實現版本。需要VS2008開啟。

點選這裡下載C#版本。

點選這裡下載CPP版本。