特级做A爰片毛片免费69,永久免费AV无码不卡在线观看,国产精品无码av地址一,久久无码色综合中文字幕

屏幕截圖軟件設(shè)計(jì).doc

約10頁(yè)DOC格式手機(jī)打開(kāi)展開(kāi)

屏幕截圖軟件設(shè)計(jì),摘要: 本文闡述 vc++實(shí)現(xiàn)屏幕截圖功能的原理和具體設(shè)計(jì)步驟,所實(shí)現(xiàn)的這個(gè)抓圖軟件可以截取整個(gè)屏幕,截取指定的窗口,并將截取到的圖像以bmp文件形式保存到指定的路徑下。技術(shù)重點(diǎn)在鼠標(biāo)在屏幕上的準(zhǔn)確定位;如何獲取抓圖的窗口句柄;如何對(duì)抓到的圖片進(jìn)行保存的問(wèn)題。技術(shù)難點(diǎn)在如何將所抓取的屏幕窗口保存為磁盤bmp文件形式。關(guān)...
編號(hào):10-208183大小:105.00K
分類: 論文>計(jì)算機(jī)論文

內(nèi)容介紹

此文檔由會(huì)員 wanli1988go 發(fā)布

摘要: 本文闡述 VC++實(shí)現(xiàn)屏幕截圖功能的原理和具體設(shè)計(jì)步驟,所實(shí)現(xiàn)的這個(gè)抓圖軟件可以截取整個(gè)屏幕,截取指定的窗口,并將截取到的圖像以bmp文件形式保存到指定的路徑下。技術(shù)重點(diǎn)在鼠標(biāo)在屏幕上的準(zhǔn)確定位;如何獲取抓圖的窗口句柄;如何對(duì)抓到的圖片進(jìn)行保存的問(wèn)題。技術(shù)難點(diǎn)在如何將所抓取的屏幕窗口保存為磁盤BMP文件形式。
關(guān)鍵詞:屏幕截圖;BMP位圖;設(shè)備環(huán)境(DC)


1 引言
在我們的日常上網(wǎng)活動(dòng)當(dāng)中比如看電影、玩游戲、做圖等等會(huì)對(duì)一些畫面特別喜歡!但是卻沒(méi)有辦法將這些畫面以圖片形式保存下來(lái),真是猶如“水中月,鏡中花”看得到卻得不到。由于QQ的出現(xiàn),曾改變了幾億人的交流生活方式,它的里面嵌入的任意截圖功能,更是為人們的生活增添了無(wú)限的歡愉和快樂(lè),通過(guò)截圖自己可以將最喜歡的游戲畫面,最喜歡的電影畫面,以圖片形式保存,可以及時(shí)的發(fā)給好友共享,給我們帶來(lái)了意想不到的幫助和驚喜。
另外系統(tǒng)的功能強(qiáng)大的截圖軟件在社會(huì)建設(shè)的各個(gè)領(lǐng)域都到了施展空間,為人們的工作生活創(chuàng)造了極大的方便,解決了許多棘手難題??梢哉f(shuō)呀抓圖軟件有很廣闊的應(yīng)用前景,雖然它不算是很龐大的系統(tǒng)軟件,但是其它的大型的主流系統(tǒng)軟件能夠嵌入抓圖的功能,必將受到極大的歡迎和青睞。
所以在此次軟件課程設(shè)計(jì)當(dāng)中,我選擇了用VC制作屏幕截圖的軟件,實(shí)現(xiàn)截取指定窗口,整個(gè)屏幕的功能,并且將截取的圖形以BMP文件形式存放在指定路徑的磁盤當(dāng)中。本文將系統(tǒng)介紹截圖軟件的設(shè)計(jì)原理,設(shè)計(jì)步驟,設(shè)計(jì)方法,和運(yùn)用的重點(diǎn)技術(shù)。

2 實(shí)現(xiàn)基本原理和運(yùn)用相關(guān)技術(shù)
抓圖軟件基本原理就是把屏幕上所抓取的圖像復(fù)制到內(nèi)存中,并最后將內(nèi)存中的圖像內(nèi)容以位圖文件形式保存到磁盤當(dāng)中。在這此軟件設(shè)計(jì)當(dāng)中,如果用戶將鼠標(biāo)左鍵按住不放,則開(kāi)始抓取圖片,此時(shí)隱藏程序窗口,以免影響在抓取時(shí)的“視野”,接著裝入“魔法棒”鼠標(biāo),開(kāi)始追蹤鼠標(biāo)的移動(dòng),然后獲得鼠標(biāo)所在處的窗口句柄,取得屏幕的設(shè)備環(huán)境句柄,以便在屏幕的任何位置繪圖。接下來(lái)建立一紅色的畫筆,得到鼠標(biāo)所在處的窗口的區(qū)域,在鼠標(biāo)所在處的窗口四周畫一紅色的矩形,做為選定時(shí)的提醒。當(dāng)鼠標(biāo)左鍵釋放的時(shí)候得到鼠標(biāo)所在處的窗口的區(qū)域?qū)?、高,然后建立一個(gè)屏幕設(shè)備環(huán)境句柄和與屏幕設(shè)備環(huán)境句柄兼容、與鼠標(biāo)所在處的窗口的區(qū)域等大的位圖,把新位圖選到內(nèi)存設(shè)備描述表中,最后把屏幕設(shè)備描述表拷貝到內(nèi)存設(shè)備描述表中,終止鼠標(biāo)捕獲,恢復(fù)窗口顯示模式。那么最后要作的工作就是寫一個(gè)位圖保存函數(shù)將內(nèi)存當(dāng)中的窗口圖片信息以位圖形式保存到指定磁盤當(dāng)中。在整個(gè)程序當(dāng)中要用到大量的函數(shù):比如申請(qǐng)內(nèi)存空間用于存放位圖文件 GlobalAlloc(GHND,F(xiàn)ileLength); 位圖文件讀入所申請(qǐng)內(nèi)存空間中LoadFileToMemory( mpBitsSrc,mFileName); 在OnPaint等函數(shù)中用創(chuàng)建顯示用位圖;用CreateDIBitmap()創(chuàng)建顯示用位圖;用CreateCompatibleDC()創(chuàng)建兼容DC, 用SelectBitmap()選擇顯示位圖; 用BitBlt或StretchBlt等函數(shù)顯示位圖 ; 用DeleteObject()刪除所創(chuàng)建的位圖;程序中還會(huì)用到許多關(guān)鍵函數(shù)在這里不在詳細(xì)敘述,其功能用法可以參照MSDN。
屏幕抓圖程序的關(guān)鍵有兩點(diǎn):一是應(yīng)該知道鼠標(biāo)在屏幕上有準(zhǔn)確位置;二是應(yīng)該知道欲抓圖的窗口句柄;三是如何對(duì)抓到的圖片進(jìn)行保存的問(wèn)題。對(duì)于問(wèn)題一,很簡(jiǎn)單,利用SetCapture函數(shù)便能夠追蹤鼠標(biāo)的移動(dòng)(包括在屏幕抓圖程序窗口之外的窗口)。對(duì)于問(wèn)題二,這時(shí)會(huì)用到一個(gè)平時(shí)我們不常用的函數(shù):WindowFromPoint,其函數(shù)用法如下:HWND WindowFromPoint{ POINT Point; //坐標(biāo)};這個(gè)函數(shù)能夠找出鼠標(biāo)當(dāng)前位置所對(duì)應(yīng)的窗口句柄。具體用法可以參見(jiàn)MSDN,這里不做詳細(xì)敘述。在選擇抓圖窗口時(shí),鼠標(biāo)的在位置的窗口都會(huì)出現(xiàn)加粗的有色邊框,以提醒目前所選擇的窗口,這個(gè)功能實(shí)現(xiàn)起來(lái)有些復(fù)雜,它的代碼如下:
POINT pt[5];
pt[0] = CPoint(rectCapture.left, rectCapture.top);
pt[1] = CPoint(rectCapture.right,rectCapture.top);
pt[2] = CPoint(rectCapture.right,rectCapture.bottom);
pt[3] = CPoint(rectCapture.left, rectCapture.bottom);
pt[4] = CPoint(rectCapture.left, rectCapture.top);
在GDI中,最常見(jiàn)的一個(gè)概念就設(shè)備環(huán)境(DC),每一個(gè)窗口都相應(yīng)的具有自己的DC。如果能夠調(diào)用到窗口的DC,那么,我們便能夠在窗口上的任何位置繪圖。然而,在屏幕抓圖程序中,由于用戶所選擇的窗口是不固定的,所以,要想得到鼠標(biāo)所在處的窗口的DC,不是很容易。但是能夠隨心所欲地在屏幕上進(jìn)行繪圖卻又不僅限于特定的窗口,GetDC能夠做到這點(diǎn)! GetDC的函數(shù)申明:HDC GetDC( HWND hWnd),hWnd是DC對(duì)應(yīng)的窗口句柄,當(dāng)hWnd為空時(shí),該函數(shù)返回的是整個(gè)屏幕的設(shè)備環(huán)境句柄!這就意味著我們可以在屏幕上進(jìn)行任意繪圖。在鼠標(biāo)所在處的窗口進(jìn)行繪圖時(shí),繪圖本身的目的只是為了提醒用戶目前所選擇的窗口,所以,在進(jìn)行繪圖時(shí),必須得保證不會(huì)破壞窗口原有的畫面。這點(diǎn)很好辦,將窗口的DC繪圖模式設(shè)為R2_NOTXORPEN(將畫筆顏色與屏幕顏色進(jìn)行異或后,再將屏幕顏取反),這樣,在同一個(gè)地方進(jìn)行兩次繪圖后(對(duì)同一像素進(jìn)行兩次異或運(yùn)算,像素值并不會(huì)發(fā)生變化),窗口的畫面并不會(huì)發(fā)生任何變化。以上就是此次截圖軟件設(shè)計(jì)當(dāng)中運(yùn)用的相關(guān)技術(shù)和設(shè)計(jì)實(shí)現(xiàn)原理。
參考文獻(xiàn)

1.何東健. 數(shù)字圖像處理. 西安:西安電子科技大學(xué)出版社,2003
2.楊永國(guó).Visual C++ 6.0實(shí)用教程. 北京:清華大學(xué)出版社,2004
3.張力. Visual C++高級(jí)編程. 北京:人民郵電出版社,2002
4.《電腦編程技巧與維護(hù)》雜志社,Visual C/C++編程精選集錦(數(shù)據(jù)庫(kù)和圖形圖像分冊(cè)).北京:科學(xué)出版社,2003
5.黃承安. Visual C++.NET 經(jīng)典開(kāi)發(fā)案例. 北京:中國(guó)鐵道出版社,2003
6. 計(jì)算機(jī)世界網(wǎng)www.ccw.com.cn. 屏幕抓圖程序DIY.
http://www.ccw.com.cn/htm/app/aprog/01_9_12_5.asp, 2001