【基于Java的QQ屏幕截圖工具設(shè)計(jì)(論文)】_第1頁(yè)
【基于Java的QQ屏幕截圖工具設(shè)計(jì)(論文)】_第2頁(yè)
【基于Java的QQ屏幕截圖工具設(shè)計(jì)(論文)】_第3頁(yè)
【基于Java的QQ屏幕截圖工具設(shè)計(jì)(論文)】_第4頁(yè)
【基于Java的QQ屏幕截圖工具設(shè)計(jì)(論文)】_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于Java的QQ屏幕截圖工具設(shè)計(jì)報(bào)告目錄目錄 51.緒論 71.1課題背景 71.2課題研究?jī)?nèi)容 72.可行性分析及開(kāi)發(fā)環(huán)境的選擇 82.1可行性分析 82.1.1技術(shù)可行性 92.1.2經(jīng)濟(jì)可行性 92.1.3法律可行性 92.1.4可行性結(jié)論 92.2運(yùn)行環(huán)境的選擇 92.3開(kāi)發(fā)工具的選擇 102.4B/S結(jié)構(gòu) 113.系統(tǒng)需求分析 123.1業(yè)務(wù)需求 133.2用戶需求 133.3性能需求 134.系統(tǒng)設(shè)計(jì) 134.1系統(tǒng)的設(shè)計(jì)目標(biāo) 144.2系統(tǒng)功能整體設(shè)計(jì) 145.系統(tǒng)設(shè)計(jì)實(shí)現(xiàn) 155.1系統(tǒng)主界面實(shí)現(xiàn) 155.2系統(tǒng)截圖實(shí)現(xiàn) 175.3截圖的編輯實(shí)現(xiàn) 235.4截圖的存儲(chǔ)實(shí)現(xiàn) 316.系統(tǒng)測(cè)試 356.1截圖軟件系統(tǒng)測(cè)試 356.1.1保存選項(xiàng)測(cè)試 356.1.2復(fù)制到剪切板選項(xiàng)測(cè)試 366.1.3編輯選項(xiàng)測(cè)試 366.2測(cè)試評(píng)價(jià) 37結(jié)論 37參考文獻(xiàn) 38致謝 391.緒論所謂的截圖就是將計(jì)算機(jī)中的某一畫(huà)面使用圖片的方式記錄下來(lái),以供操作和使用。截圖是從個(gè)人需求出發(fā),根據(jù)需要獲取計(jì)算機(jī)中的內(nèi)容,以圖片形式將想要獲取的內(nèi)容保存下來(lái),可以對(duì)圖片進(jìn)行存儲(chǔ)、編輯、發(fā)送等多種操作。獲取的圖標(biāo)與人眼所示的效果的相同的。通常,計(jì)算機(jī)以及某些軟件就帶有截圖功能,如QQ就具有截圖工具。截取下來(lái)的圖片大致可以分成兩個(gè)類別,一種是靜態(tài)的圖標(biāo),圖片是一種像素文件,一般保存形式的后綴為BMP、PNG、JPG。另一種就是動(dòng)態(tài)形式的圖片,是一個(gè)動(dòng)態(tài)的文件,保存格式為GIF。截圖顯示了當(dāng)時(shí)時(shí)間下各元素的狀態(tài),保存了當(dāng)時(shí)的狀態(tài)信息。1.1課題背景隨著計(jì)算機(jī)的普及以及信息技術(shù)的飛速發(fā)展,在信息處理方面,尤其是圖片信息的處理方面,需求越來(lái)越高。在日常的工作中,無(wú)論是溝通還是文件內(nèi)容的編輯和撰寫(xiě),其中都涉及了截圖的過(guò)程,通過(guò)截圖獲取信息或者直觀的作為信息傳播和展示的載體。提升工作效率是很多企業(yè)的目標(biāo),也是社會(huì)發(fā)展所必須的。在文檔的撰寫(xiě)過(guò)程中通常會(huì)花費(fèi)大量的時(shí)間,效果可能并不理想,因此使用截圖工具獲取圖片信息能夠簡(jiǎn)化文檔的處理過(guò)程。截圖工具具有多種功能,例如,截圖、保存、復(fù)制等,節(jié)省了文檔的編輯時(shí)間,提升的工作效率。不只是在文檔的編輯過(guò)程中可以使用,也可以靈活的應(yīng)用于多個(gè)工作過(guò)程中。現(xiàn)階段的截圖工具中都或多或少的受到條件的限制,影響使用者的操作效率。因此本設(shè)計(jì)使用Java語(yǔ)言設(shè)計(jì)了截圖工具,為用戶提供更加便利的使用條件。1.2課題研究?jī)?nèi)容為了便于用戶的使用和操作,本人設(shè)計(jì)的是單機(jī)版的截圖工具,能夠根據(jù)用戶的操作獲取相應(yīng)的截圖,同時(shí)具有存儲(chǔ)、編輯和復(fù)制等功能,可以根據(jù)需要設(shè)置相應(yīng)的操作熱鍵。本截圖工具通過(guò)捕捉和追蹤光標(biāo)的位置獲取制定區(qū)域的截圖。用戶可以對(duì)截取的圖片進(jìn)行重命名,如果沒(méi)有重命名的話,圖片就以系統(tǒng)時(shí)間為名稱保存。儲(chǔ)存的位置用戶可以進(jìn)行選擇。當(dāng)圖片存儲(chǔ)成功時(shí)會(huì)出現(xiàn)存儲(chǔ)位置的提示窗,同時(shí)用戶可以選擇圖片的保存格式。保存之前可以在多層菜單欄中預(yù)覽保存結(jié)果。成功保存的圖片都可以瀏覽,多層菜單欄中能夠?qū)訉语@示圖片。用戶可以對(duì)圖片進(jìn)行編輯,主要是添加文字內(nèi)容,之后也能夠進(jìn)行保存。2.可行性分析及開(kāi)發(fā)環(huán)境的選擇2.1可行性分析可行性分析的項(xiàng)目進(jìn)行,就必須得綜合許多方面的知識(shí)以及常識(shí),并將它們與即將進(jìn)行的項(xiàng)目進(jìn)行比較,從而將項(xiàng)目的相關(guān)內(nèi)容同有關(guān)人士進(jìn)行咨詢,在此基礎(chǔ)上展開(kāi)對(duì)項(xiàng)目的仔仔細(xì)細(xì)的鉆研,以保證項(xiàng)目的進(jìn)一步實(shí)施,并且結(jié)合多方面的資料,對(duì)項(xiàng)目給出詳細(xì)的方案,當(dāng)然也必須將收益進(jìn)行預(yù)估,必須保證項(xiàng)目的收入滿足成本的輸出,為項(xiàng)目的設(shè)計(jì)和完成提供具有合理性、可行性的建議,同時(shí)提供堅(jiān)實(shí)的理論基礎(chǔ)對(duì)項(xiàng)目的整體設(shè)計(jì)進(jìn)行指導(dǎo)??尚行苑治霰仨毦邆湟恍┨卣鳎热纾海?)能夠大體的預(yù)估收益的大?。唬?)能夠公平的進(jìn)行分析與決斷;(3)能夠保證項(xiàng)目進(jìn)行的通暢;(4)具有非??捎^的理論依據(jù)??尚行苑治鰧?duì)整個(gè)項(xiàng)目的設(shè)計(jì)、建設(shè)、完善具有重要的影響。對(duì)項(xiàng)目的可行性進(jìn)行分析能夠及時(shí)的發(fā)現(xiàn)項(xiàng)目中的不足之處,保證項(xiàng)目的可行性??尚行苑治鼍哂幸韵聝牲c(diǎn)要求。第一,從客觀的角度對(duì)項(xiàng)目進(jìn)行分析,先收集相關(guān)的資料和數(shù)據(jù),同時(shí)與社會(huì)中的真實(shí)數(shù)據(jù)進(jìn)行對(duì)比,對(duì)二者之間的差異情況進(jìn)行分析,結(jié)合實(shí)際的社會(huì)情況和行業(yè)的變化趨勢(shì)討論項(xiàng)目是否值得繼續(xù)進(jìn)行。第二,可行性研究和分析的內(nèi)容必須符合國(guó)家的多定義原則,研究的主體必須是完整的,不能有缺少的部分。在進(jìn)行研究時(shí)盡可能獲取全面的信息數(shù)據(jù),保證調(diào)查的準(zhǔn)確,可行性分析結(jié)果具有指導(dǎo)性。2.1.1技術(shù)可行性B/S結(jié)構(gòu)中包括兩部分,分別是瀏覽器(Browser)和服務(wù)器(Server),本截圖工具中主要使用了Java語(yǔ)言以及網(wǎng)絡(luò)技術(shù),這些技術(shù)十分常見(jiàn)。因此,本設(shè)計(jì)在技術(shù)上具有可行性。2.1.2經(jīng)濟(jì)可行性本設(shè)計(jì)在硬件方面的要求不高,由我們?nèi)珯?quán)負(fù)責(zé),自行研究,成本需要較低,幾乎可以忽略不計(jì),后期的維護(hù)也可以自行完成,成本較少。因此本設(shè)計(jì)在經(jīng)濟(jì)上具有可行性。2.1.3法律可行性Eclipse是一個(gè)免費(fèi)的,開(kāi)放的軟件,本設(shè)計(jì)不用于經(jīng)營(yíng)和盈利活動(dòng),是自己開(kāi)發(fā)研究的,不存在侵權(quán)行為,不會(huì)引發(fā)其他的法律責(zé)任。因此,本設(shè)計(jì)在法律方面具有可行性。2.1.4可行性結(jié)論從以上技術(shù)、經(jīng)濟(jì)、法律方面進(jìn)行分析,本設(shè)計(jì)具有可行性,可以進(jìn)行后續(xù)的研究和開(kāi)發(fā)。2.2運(yùn)行環(huán)境的選擇本設(shè)計(jì)對(duì)運(yùn)行條件和與運(yùn)行環(huán)境沒(méi)有嚴(yán)格的要求。在Windows系統(tǒng)或者Linux系統(tǒng)中都可以進(jìn)行使用,但是需要注意的是,系統(tǒng)的版本可能會(huì)對(duì)效果具有一定的影響。本截圖工具只需要一臺(tái)計(jì)算機(jī)就能夠進(jìn)行,過(guò)程中不需要繳納任何費(fèi)用,用戶只需登錄就能夠進(jìn)行多種操作。2.3開(kāi)發(fā)工具的選擇本設(shè)計(jì)中使用的設(shè)計(jì)軟件是Eclipse,使用的編程語(yǔ)言是Java。Eclipse是不收費(fèi)的,為軟件設(shè)計(jì)提供良好的設(shè)計(jì)環(huán)境,也允許使用Java語(yǔ)言進(jìn)行潤(rùn)建設(shè)合計(jì)。Eclipse包含了很多設(shè)計(jì)框架,因此其能夠提供多種服務(wù),設(shè)計(jì)環(huán)境中包括多種插件和組件,其組合形式多種多樣。Eclipse中具有規(guī)范化的collection,能夠?qū)⒉寮徒M件保存下來(lái),最常見(jiàn)的就是Javadevelopmentkit。Eclipse最早是由加拿大的OptimizationTechnologyInc公司和InternationalBusinessMachinesCorporation公司共同與1994年創(chuàng)建的。Eclipse的基礎(chǔ)建設(shè)是由InternationalBusinessMachinesCorporation公司負(fù)責(zé)。經(jīng)過(guò)一段時(shí)間的運(yùn)營(yíng),Eclipse項(xiàng)目的參與者越來(lái)越多,已經(jīng)形成了一個(gè)聯(lián)盟,成員公司的數(shù)量已經(jīng)超過(guò)了150家。例如當(dāng)時(shí)比較有名的寶藍(lán)公司、賽貝斯公司都參與到Eclipse中。Eclipse是免費(fèi)的,用戶不需要繳納任何費(fèi)用就能夠獲得相關(guān)的軟件資源,同時(shí)可以在原代碼上進(jìn)行改變,設(shè)計(jì)自己想要的工具。隨著使用的人越來(lái)越多,幾個(gè)大型企業(yè)關(guān)注到這個(gè)設(shè)計(jì)軟件并加入到研發(fā)中來(lái)。Eclipse支持多種語(yǔ)言的使用,可以在多個(gè)平臺(tái)上使用,用戶通過(guò)簡(jiǎn)單的操作就能夠獲得自身想要的語(yǔ)言。Java語(yǔ)言具有平臺(tái)無(wú)關(guān)性、多線程技術(shù)和安全可靠性等特點(diǎn)。平臺(tái)無(wú)關(guān)性是指Java語(yǔ)言適用于多種網(wǎng)絡(luò)環(huán)境中,不會(huì)受到計(jì)算機(jī)和網(wǎng)絡(luò)的平臺(tái)的影響。這一特點(diǎn)減輕了工作人員和管理人員的工作壓力。多線程技術(shù)是指計(jì)算機(jī)的軟硬件同時(shí)處理一個(gè)或者多個(gè)線程的技術(shù)。擁有多線程技術(shù)能夠使計(jì)算機(jī)在一段時(shí)間內(nèi)處理多個(gè)線程,提升了計(jì)算機(jī)的控制能力。安全可靠性是指相比于c++語(yǔ)言,Java能夠避免很多編程錯(cuò)誤的發(fā)生。Java語(yǔ)言是從c++語(yǔ)言中衍生來(lái)的,通常使用與網(wǎng)絡(luò)應(yīng)用中。假設(shè)Java的安全性較低,那么當(dāng)計(jì)算機(jī)之間傳遞信息資料時(shí),就很容易被網(wǎng)絡(luò)病毒攻擊,造成系統(tǒng)破壞。因此為了保證共享過(guò)程不會(huì)出現(xiàn)問(wèn)題,因此Java語(yǔ)言具有較高的安全性。Java語(yǔ)言主要是通過(guò)自身的病毒預(yù)防機(jī)制和保護(hù)機(jī)制實(shí)現(xiàn)安全性的,保護(hù)了計(jì)算機(jī)系統(tǒng)和信息資料的的安全。2.4B/S結(jié)構(gòu)B/S結(jié)構(gòu)中包括兩部分,分別是瀏覽器和服務(wù)器,是一種web架構(gòu),受到廣大使用者的歡迎。瀏覽器是為用戶提供服務(wù)的關(guān)鍵部分,大部分軟件的功能都需要通過(guò)瀏覽器才能實(shí)現(xiàn)。服務(wù)器是為用戶提供服務(wù)對(duì)用戶進(jìn)行管理的重要終端,對(duì)軟件的正常運(yùn)行以及需求功能的提供具有極大的影響。計(jì)算機(jī)上安裝一個(gè)瀏覽器,服務(wù)器上具有能夠正常使用的數(shù)據(jù)庫(kù)就能夠?qū)崿F(xiàn)軟件功能。通過(guò)網(wǎng)絡(luò),瀏覽器和服務(wù)器就能夠進(jìn)行數(shù)據(jù)傳輸和信息互通。B/S是從C/S結(jié)構(gòu)的基礎(chǔ)上提出的,由于C/S結(jié)構(gòu)存在一定的問(wèn)題,所以B/S結(jié)構(gòu)應(yīng)運(yùn)而生,隨著時(shí)間的推移和技術(shù)水平的提高,B/S結(jié)構(gòu)越來(lái)越豐富,使用者也越來(lái)越多。與二層架構(gòu)的C/S結(jié)構(gòu)不同的是B/S結(jié)構(gòu)具有三層架構(gòu),可以說(shuō)是C/S結(jié)構(gòu)的一種特殊形式。B/S結(jié)構(gòu)中的使用的網(wǎng)絡(luò)技術(shù)越來(lái)越多,功能逐步豐富。B/S結(jié)構(gòu)將網(wǎng)絡(luò)的編程語(yǔ)言、瀏覽器的腳本、媒體對(duì)象技術(shù)相結(jié)合,為廣大的用戶提供便利的操作條件,使用任何瀏覽器都能使軟件正常運(yùn)行,實(shí)現(xiàn)其功能,發(fā)揮其作用,同時(shí)在成本的投入規(guī)模上也得到了一定程度的節(jié)省。B/S結(jié)構(gòu)的優(yōu)勢(shì)就是其操作不會(huì)受到瀏覽器和空間的限制。只要計(jì)算機(jī)能夠連接網(wǎng)絡(luò)就能夠運(yùn)行軟件。用戶使用的計(jì)算機(jī)上也不需要下載多余的軟件,也不需要進(jìn)行維護(hù)和檢修,節(jié)省了很多不必要的時(shí)間,系統(tǒng)的拓展也很便利。B/S結(jié)構(gòu)具有維護(hù)優(yōu)化方式簡(jiǎn)單的特點(diǎn)。B/S結(jié)構(gòu)的軟件只需要在服務(wù)器上進(jìn)行維護(hù)和檢查即可,不需要在客戶端進(jìn)行任何操作。同時(shí)B/S結(jié)構(gòu)花費(fèi)的成本少,選擇方向多。只需要在服務(wù)器上對(duì)軟件進(jìn)行管理即可,這樣也提高了數(shù)據(jù)信息的安全性以及用戶計(jì)算機(jī)系統(tǒng)的安全性。由于B/S結(jié)構(gòu)的軟件大部分服務(wù)功能都需要服務(wù)器的支持,服務(wù)器的負(fù)荷較大。3.系統(tǒng)需求分析需求分析是指在計(jì)算機(jī)中新建一個(gè)項(xiàng)目或者對(duì)現(xiàn)存的項(xiàng)目進(jìn)行修改以描述新項(xiàng)目。需求分析是系統(tǒng)進(jìn)入運(yùn)行階段之前進(jìn)行的準(zhǔn)備工作,對(duì)軟件的設(shè)計(jì)具有十分重要的影響。需求分析的過(guò)程就是將目標(biāo)消費(fèi)者的需求傳達(dá)到設(shè)計(jì)師處,設(shè)計(jì)師從顧客的需求出發(fā)對(duì)系統(tǒng)進(jìn)行設(shè)計(jì)。只有從顧客的需求出發(fā)才能設(shè)計(jì)出使用的工具,同時(shí)也能根據(jù)需求的變化對(duì)工具進(jìn)行一定的調(diào)整和優(yōu)化,進(jìn)而為顧客提供更加優(yōu)質(zhì)的服務(wù)。需求分析的主要內(nèi)容就是掌握顧客的需求。需求分析對(duì)將會(huì)使用軟件的主要群體進(jìn)行調(diào)查,從原本的設(shè)計(jì)基礎(chǔ)和運(yùn)行現(xiàn)狀出發(fā),及時(shí)總結(jié)目標(biāo)群體的需求變化,結(jié)合需求變化趨勢(shì)對(duì)系統(tǒng)進(jìn)行調(diào)整和優(yōu)化,豐富系統(tǒng)的功能。需求分析中包括多方面的內(nèi)容,主要有以下幾種:(1)效果需要;(2)性能供應(yīng)(3)能夠上市與有保障(4)解決異常(5)銜接的處理(6)限制(7)反方向的處理(8)日后有幾率產(chǎn)生的需要。需求分析有以下步驟。首先掌握組織機(jī)構(gòu)實(shí)際情況,然后掌握其業(yè)務(wù)活動(dòng),之后收集用戶的要求信息,明確系統(tǒng)中需要調(diào)整的部分,其次對(duì)系統(tǒng)功能和數(shù)據(jù)進(jìn)行分析,最后對(duì)分析結(jié)果進(jìn)行歸納和總結(jié),完成分析報(bào)告。3.1業(yè)務(wù)需求能夠?qū)崿F(xiàn)對(duì)屏幕的隨機(jī)截取,復(fù)制,保存以及添加文字等操作,便于用戶對(duì)數(shù)據(jù)的處理。3.2用戶需求用戶給設(shè)計(jì)者提出的軟件上的需求,是對(duì)產(chǎn)品的的要求。3.3性能需求界面清楚明確,操作簡(jiǎn)單,用戶容易掌握截圖操作。4.系統(tǒng)設(shè)計(jì)Physicaldesign是進(jìn)行軟件設(shè)計(jì)的基礎(chǔ)。從用戶的需求出發(fā),確定系統(tǒng)的功能,進(jìn)而明確系統(tǒng)的邏輯需求和性能模型。在滿足用戶需求以及能夠順利運(yùn)行的前提下,制定合理的設(shè)計(jì)方案使本設(shè)計(jì)能夠具體化,能夠在計(jì)算機(jī)中運(yùn)行。系統(tǒng)設(shè)計(jì)為軟件提供了物理模型。系統(tǒng)設(shè)計(jì)將軟件分成多個(gè)層次,將整個(gè)系統(tǒng)進(jìn)行拆分,分析其中的數(shù)據(jù)庫(kù)以及各個(gè)部分的運(yùn)行過(guò)程和方式。通俗點(diǎn)說(shuō),系統(tǒng)設(shè)計(jì)就是將軟件的運(yùn)行流程展現(xiàn)在用戶的眼前,便于用戶理解和操作。其中系統(tǒng)設(shè)計(jì)中包括總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)和具體步驟總體設(shè)計(jì)就是在每個(gè)模塊的分界線處作出詳細(xì)的設(shè)計(jì)并設(shè)計(jì)各個(gè)小內(nèi)容內(nèi)部的上下等級(jí)的結(jié)構(gòu)同時(shí)設(shè)置數(shù)據(jù)庫(kù)。詳細(xì)設(shè)計(jì)就是對(duì)各部分的運(yùn)行細(xì)節(jié)進(jìn)行控制,主要是對(duì)算法的編寫(xiě)和構(gòu)成的信息結(jié)構(gòu)進(jìn)行控制。演繹法和歸納法是系統(tǒng)設(shè)計(jì)常用的兩種方法。演繹法是一種從普通到特殊的推理方法,換句話說(shuō)就是從常見(jiàn)的事實(shí)和理論出發(fā),根據(jù)不同的設(shè)計(jì)經(jīng)驗(yàn)和知識(shí)水平,對(duì)能夠滿足需求的模塊進(jìn)行挑選,選出符合設(shè)計(jì)條件的模塊,再將這些模塊按照一定的組成方式進(jìn)行組合,完成項(xiàng)目的設(shè)計(jì)。如果使用歸納法,有以下幾點(diǎn)需要注意。首先就是要獲取充足的數(shù)據(jù)資料,尤其是相關(guān)性較高的資料。其次,要對(duì)收集到的資料進(jìn)行整理和總結(jié),將資料數(shù)據(jù)作為基礎(chǔ)進(jìn)行設(shè)計(jì)和分析,主要是進(jìn)行需求分析,設(shè)計(jì)系統(tǒng)的功能。4.1系統(tǒng)的設(shè)計(jì)目標(biāo)本系統(tǒng)工具的設(shè)計(jì)便利了信息的儲(chǔ)存形式,不再需要手動(dòng)輸入信息,信息的獲取更加準(zhǔn)確和便捷。本截圖工具具備隨即截圖、編輯、復(fù)制、存儲(chǔ)功能。4.2系統(tǒng)功能整體設(shè)計(jì) 開(kāi)發(fā)的總體設(shè)計(jì): 截圖:根據(jù)提示,隨機(jī)獲取指定屏幕區(qū)域; 編輯:在圖片上添加文字; 存儲(chǔ):指定存儲(chǔ)目錄將截圖進(jìn)行存儲(chǔ)。 流程圖請(qǐng)看下圖(1):圖(1)程序流程圖5.系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)5.1系統(tǒng)主界面實(shí)現(xiàn)系統(tǒng)主界面有公共操作區(qū)、操作欄、界面布局三部分。操作欄部分代碼以及注解:JPanelall=newJPanel();all.add(jp);all.add(buttonJP);通過(guò)getContentPane()方法得到窗體最下面那個(gè)面板然后往面板上添加控件c然后放到窗體的正中央位置;在窗體南方的位置上添加一個(gè)控件。設(shè)置控件的尺寸寬500高400設(shè)置窗口相對(duì)于指定組件的位置。如果組件當(dāng)前未顯示,或者c為null,則此窗口將置于屏幕的中央。設(shè)置組件的可見(jiàn)性,如果為true則組件可見(jiàn)設(shè)置將該窗體永遠(yuǎn)在最前端顯示用戶單擊窗口的關(guān)閉按鈕時(shí)程序執(zhí)行的操作 界面布局注解: JPaneljp=newJPanel(); jp.add(system=newJRadioButton("系統(tǒng)界面",true)); system.addActionListener(this); jp.setBorder(BorderFactory.createTitledBorder("界面風(fēng)格"));創(chuàng)建面板jp,給jp設(shè)置一個(gè)標(biāo)題,標(biāo)題名稱為界面風(fēng)格,將面板jp設(shè)置為系統(tǒng)界面給其添加到動(dòng)作監(jiān)聽(tīng)器頁(yè)面效果代碼及注解:publicvoidactionPerformed(ActionEventae){這里寫(xiě)一個(gè)動(dòng)作開(kāi)始執(zhí)行的方法,參數(shù)是一個(gè)動(dòng)作事件,先聲明一個(gè)新的變量來(lái)獲取這個(gè)事件源,然后在通過(guò)if語(yǔ)句判斷動(dòng)作類型:start執(zhí)行的是開(kāi)始截屏動(dòng)作;cancel執(zhí)行的是退出操作。elseif(source==cancel){System.exit(0);}如果事件源的值為system,則顯示本軟件的系統(tǒng)外觀,這里需要捕獲一下異常。} } 系統(tǒng)的外觀如下圖(2)所示:圖(2)系統(tǒng)外觀圖5.2系統(tǒng)截圖實(shí)現(xiàn)設(shè)置起點(diǎn)終點(diǎn)橫縱坐標(biāo),注解請(qǐng)看下面:這里實(shí)現(xiàn)的是獲取截取屏幕范圍起點(diǎn)、終點(diǎn)的橫縱坐標(biāo),然后將這個(gè)范圍的邊框設(shè)置為紅色,畫(huà)出對(duì)應(yīng)截取屏幕的范圍。對(duì)于縱坐標(biāo)y,通過(guò)三目運(yùn)算符判斷,如果startY小于endY,那么y的值為startY,否則為endY。選擇區(qū)域的變量設(shè)置為select,創(chuàng)建一個(gè)新的矩形框?qū)ο?,他的寬是起點(diǎn)的橫坐標(biāo)減去終點(diǎn)的橫坐標(biāo)的絕對(duì)值;他的高是起點(diǎn)的縱坐標(biāo)減去終點(diǎn)的縱坐標(biāo)的絕對(duì)值。設(shè)置八點(diǎn)的位置,注解請(qǐng)看下面:設(shè)置八個(gè)點(diǎn)的位置,先創(chuàng)建一個(gè)坐標(biāo)對(duì)象,設(shè)置他的起始點(diǎn)和終點(diǎn),起點(diǎn)就是x,y兩個(gè)參數(shù)減去5個(gè)像素點(diǎn),終點(diǎn)的位置在(10,10);第二個(gè)點(diǎn)同上邊的第一個(gè)點(diǎn);然后是第三個(gè)點(diǎn)的位置,判斷起點(diǎn)的橫坐標(biāo)是否大于終點(diǎn)的橫坐標(biāo),如果結(jié)果為true,則起始點(diǎn)橫坐標(biāo)為startX,否則為EndX;終點(diǎn)的坐標(biāo)依然是(10,10);依次往后的點(diǎn)都如同第三個(gè)點(diǎn).運(yùn)行這個(gè)軟件的效果:通過(guò)if語(yǔ)句來(lái)判斷代碼是否開(kāi)始執(zhí)行,在這里調(diào)用前邊寫(xiě)的方法,設(shè)置截圖區(qū)域待確認(rèn)狀態(tài)下是青色,fillrect該函數(shù)用指定的畫(huà)刷填充矩形,然后在設(shè)置截圖邊框顏色為紅色,設(shè)置drawRect,將需要截圖的矩形框坐標(biāo)參數(shù)傳入其中,設(shè)置他的顏色為黑色,然后設(shè)置drawString方法,在截圖的時(shí)候輸出一些提示用戶的信息。具體的截圖效果如圖(3)所示。圖(3)八點(diǎn)及邊線展示圖 定義鼠標(biāo)移動(dòng)是為了確定截屏的區(qū)域范圍和區(qū)域代碼。創(chuàng)建帶參數(shù)的私有的無(wú)返回值的方法doMouseMoved,進(jìn)行鼠標(biāo)移動(dòng)勾選電腦屏幕的指定區(qū)域,在該方法中,如果所選的內(nèi)容包括了me參數(shù)所獲得的點(diǎn)的坐標(biāo),那么就將創(chuàng)建一個(gè)新的對(duì)象Cursor,并將該對(duì)象的值設(shè)定為MOVE_COURSOR,并將current的屬性值移動(dòng)。如果不包括me,那么就將Status的值存入到一個(gè)數(shù)組中,進(jìn)行循環(huán),通過(guò)for循環(huán),循環(huán)條件是聲明一個(gè)局部的整型變量將i小于他的長(zhǎng)度,i需要在一次執(zhí)行結(jié)束進(jìn)行自加一,再在循環(huán)里進(jìn)行判斷,如果它與me獲得的值相同,那么將數(shù)組對(duì)應(yīng)值傳入到current在將此值設(shè)置到cursor里,在判斷語(yǔ)句里寫(xiě)上return,若果滿足則結(jié)束方法。循環(huán)結(jié)束后再將設(shè)置cursor,并將current的值設(shè)置為默認(rèn)的。移動(dòng)鼠標(biāo)獲取鼠標(biāo)所在的位置。以下為這一操作的解釋。//通過(guò)八個(gè)方向(上北下南左西右東)決定x坐標(biāo)與y坐標(biāo),并將它們進(jìn)行刷新值創(chuàng)建帶參數(shù)的無(wú)返回值類型的initSelect方法,參數(shù)為state,即:privatevoidinitSelect(Statesstate){使用判斷語(yǔ)句switch/case的判斷方式進(jìn)行多次判斷,如果state狀態(tài)為默認(rèn)狀態(tài),那么將x坐標(biāo)設(shè)置為0,y坐標(biāo)設(shè)置為0,用break進(jìn)行結(jié)束case; switch(state){ caseDEFAULT: currentX=0;currentY=0;break; 同理:對(duì)于不同的state將X,Y坐標(biāo)進(jìn)行設(shè)置;若果state狀態(tài)設(shè)置為東(EAST),那么將x坐標(biāo)設(shè)置為三目運(yùn)算并進(jìn)行判斷,如果x結(jié)束時(shí)的坐標(biāo)大于x開(kāi)始的坐標(biāo),就輸出結(jié)束時(shí)的x坐標(biāo),反之就輸出x開(kāi)始時(shí)的坐標(biāo),y坐標(biāo)設(shè)置為0,用break結(jié)束case;即:currentX=(endX>startX?END_X:START_X); currentY=0;break;若果state狀態(tài)設(shè)置為西(WEST),那么將x坐標(biāo)設(shè)置為三目運(yùn)算并進(jìn)行判斷,如果x結(jié)束時(shí)的坐標(biāo)大于x開(kāi)始的坐標(biāo),就輸出開(kāi)始時(shí)的x坐標(biāo),反之就輸出x結(jié)束時(shí)的坐標(biāo),y坐標(biāo)設(shè)置為0,用break結(jié)束case;若果state狀態(tài)設(shè)置為北(NORTH),那么將y坐標(biāo)設(shè)置為三目運(yùn)算并進(jìn)行判斷,如果y結(jié)束時(shí)的坐標(biāo)小于y開(kāi)始的坐標(biāo),就輸出開(kāi)始時(shí)的y坐標(biāo),反之就輸出y結(jié)束時(shí)的坐標(biāo),x坐標(biāo)設(shè)置為0,用break結(jié)束case;若果state狀態(tài)設(shè)置為南(SOUTH),那么將y坐標(biāo)設(shè)置為三目運(yùn)算并進(jìn)行判斷,如果y結(jié)束時(shí)的坐標(biāo)小于y開(kāi)始的坐標(biāo),就輸出結(jié)束時(shí)的y坐標(biāo),反之就輸出y開(kāi)始時(shí)的坐標(biāo),x坐標(biāo)設(shè)置為0,用break結(jié)束case;若果state狀態(tài)設(shè)置為東北(NORTH_EAST),那么將y坐標(biāo)設(shè)置為三目運(yùn)算并進(jìn)行判斷,如果y結(jié)束時(shí)的坐標(biāo)小于y開(kāi)始的坐標(biāo),就輸出結(jié)束時(shí)的y坐標(biāo),反之就輸出y開(kāi)始時(shí)的坐標(biāo),x坐標(biāo)設(shè)置為三目運(yùn)算并進(jìn)行判斷,如果x結(jié)束時(shí)的坐大于x開(kāi)始的坐標(biāo),就輸出開(kāi)始時(shí)的y坐標(biāo),反之輸出結(jié)束時(shí)的y坐標(biāo),用break結(jié)束case;若果state狀態(tài)設(shè)置為西北(NORTH_WEST),那么將y坐標(biāo)設(shè)置為三目運(yùn)算并進(jìn)行判斷,如果y結(jié)束時(shí)的坐標(biāo)小于y開(kāi)始的坐標(biāo),就輸出開(kāi)始時(shí)的y坐標(biāo),反之就輸出y結(jié)束時(shí)的坐標(biāo),x坐標(biāo)設(shè)置為三目運(yùn)算并進(jìn)行判斷,如果x結(jié)束時(shí)的坐大于x開(kāi)始的坐標(biāo),就輸出開(kāi)始時(shí)的x坐標(biāo),反之輸出結(jié)束時(shí)的x坐標(biāo),用break結(jié)束case;若果state狀態(tài)設(shè)置為東南(SOUTH_EAST),那么將y坐標(biāo)設(shè)置為三目運(yùn)算并進(jìn)行判斷,如果y結(jié)束時(shí)的坐標(biāo)小于y開(kāi)始的坐標(biāo),就輸出結(jié)束時(shí)的y坐標(biāo),反之就輸出y開(kāi)始時(shí)的坐標(biāo),x坐標(biāo)設(shè)置為三目運(yùn)算并進(jìn)行判斷,如果x結(jié)束時(shí)的坐大于x開(kāi)始的坐標(biāo),就輸出結(jié)束時(shí)的x坐標(biāo),反之輸出開(kāi)始時(shí)的x坐標(biāo),用break結(jié)束case;若果state狀態(tài)設(shè)置為西南(SOUTH_WEST),那么將y坐標(biāo)設(shè)置為三目運(yùn)算并進(jìn)行判斷,如果y結(jié)束時(shí)的坐標(biāo)小于y開(kāi)始的坐標(biāo),就輸出結(jié)束時(shí)的y坐標(biāo),反之就輸出y開(kāi)始時(shí)的坐標(biāo),x坐標(biāo)設(shè)置為三目運(yùn)算并進(jìn)行判斷,如果x結(jié)束時(shí)的坐大于x開(kāi)始的坐標(biāo),就輸出開(kāi)始時(shí)的x坐標(biāo),反之輸出結(jié)束時(shí)的x坐標(biāo),用break結(jié)束case;當(dāng)不屬于以上情況時(shí),將x的坐標(biāo)設(shè)置為0,y坐標(biāo)設(shè)置為0。} 在窗口顯示所截圖片注解:創(chuàng)建一個(gè)類Temp并且繼承面板類最后實(shí)現(xiàn)鼠標(biāo)監(jiān)聽(tīng)接口: privateclassTempextendsJPanelimplementsMouseListener,MouseMotionListener在該類中聲明幾個(gè)對(duì)象,即: 私有的緩沖圖片類型bi,即:privateBufferedImagebi; 私有的整型寬度以及長(zhǎng)度,即:privateintwidth,height; 私有的整型x的起始坐標(biāo),y的起始坐標(biāo),x的結(jié)束坐標(biāo),y的結(jié)束坐標(biāo),以及臨時(shí)的x坐標(biāo),y坐標(biāo),即:privateintstartX,startY,endX,endY,tempX,tempY; 私有的面板jf,即:privateJFramejf; 私有的矩形select并初始化為0,即:privateRectangleselect=newRectangle(0,0,0,0); 私有的cursor類型的cs,即: privateCursorcs=newCursor(Cursor.CROSSHAIR_CURSOR); 私有的狀態(tài)current并設(shè)置為默認(rèn)值,即:privateStatescurrent=States.DEFAULT; 私有的矩形數(shù)組,即:privateRectangle[]rec; 公有的的靜態(tài)常量x的開(kāi)始坐標(biāo),即:publicstaticfinalintSTART_X=1; 公有的的靜態(tài)常量x的結(jié)束坐標(biāo),即:publicstaticfinalintSTART_Y=2; 公有的的靜態(tài)常量y的開(kāi)始坐標(biāo),即:publicstaticfinalintEND_X=3; 公有的的靜態(tài)常量y的結(jié)束坐標(biāo),即:publicstaticfinalintEND_Y=4;privatePointp=newPoint();privatebooleanshowTip=true;創(chuàng)建公有的有參的Temp構(gòu)造函數(shù)(參數(shù)為面板jf,緩沖圖片bi,以及圖片的長(zhǎng)度,圖片的寬度),即:publicTemp(JFramejf,BufferedImagebi,intwidth,intheight){ 函數(shù)體將jf賦值給Temp的jf, bi賦值給Temp的bi, 寬度賦值給Temp的寬度, 高度賦值給Temp的高度, 在將鼠標(biāo)監(jiān)聽(tīng)器加到Temp上, 調(diào)用方法initRecs();} 創(chuàng)建私有的無(wú)參無(wú)返回值類型的方法initRecs,方法體里創(chuàng)建新的矩形對(duì)象,for循環(huán)生成矩形的八點(diǎn)坐標(biāo);即:privatevoidinitRecs() 創(chuàng)建公有的帶參數(shù)的無(wú)返回值類型的方法paintComponent,方法體里進(jìn)行劃線,指定畫(huà)線的起始以及終點(diǎn)坐標(biāo),即:publicvoidpaintComponent(Graphicsg) 并將線設(shè)置成紅色, 劃線x的起始坐標(biāo),y的起始坐標(biāo),x的終止坐標(biāo),y的起始坐標(biāo), 畫(huà)第二條線x的起始坐標(biāo),y的結(jié)束坐標(biāo),x的終止坐標(biāo),y的終止坐標(biāo), 畫(huà)第三條線x的起始坐標(biāo),y的起始坐標(biāo),x的起始坐標(biāo),y的終止坐標(biāo), 畫(huà)第四條線x的結(jié)束坐標(biāo),y的起始坐標(biāo),x的終止坐標(biāo),y的終止坐標(biāo), 并將x坐標(biāo)重新進(jìn)行賦值,若x的起始坐標(biāo)小于x的終止坐標(biāo),x值為x的起始坐標(biāo),反之為x的結(jié)束坐標(biāo), 并將y坐標(biāo)重新進(jìn)行賦值,若y的起始坐標(biāo)小于y的終止坐標(biāo),y值為y的起始坐標(biāo),反之為y的結(jié)束坐標(biāo), 將新的矩形對(duì)象設(shè)置為(x,y,起始與終止的x坐標(biāo)差的絕對(duì)值,起始與終止的y坐標(biāo)差的絕對(duì)值), 設(shè)置x1的值為起始與終止坐標(biāo)和的一半,設(shè)置y1的值為起始與終止坐標(biāo)和的一半,將其設(shè)置為:并且以矩形框設(shè)置第一個(gè)點(diǎn)的像素點(diǎn)(x-5,y-5,10,10); 以矩形框設(shè)置第二個(gè)點(diǎn)的像素點(diǎn)(x1-5,y-5,10,10); 以矩形框設(shè)置第三個(gè)點(diǎn)的像素點(diǎn)((startX>;endX?startX:endX)-5,y-5,10,10); 以矩形框設(shè)置第四個(gè)點(diǎn)的像素點(diǎn)((startX>;endX?startX:endX)-5,y1-5,10,10);以矩形框設(shè)置第五個(gè)點(diǎn)的像素點(diǎn)((startX>;endX?startX:endX)-5,(startY>;endY?startY:endY)-5,10,10); 以矩形框設(shè)置第六個(gè)點(diǎn)的像素點(diǎn)(x1-5,(startY>;endY?startY:endY)-5,10,10); 以矩形框設(shè)置第七個(gè)點(diǎn)的像素點(diǎn)(x-5,(startY>;endY?startY:endY)-5,10,10); 以矩形框設(shè)置第八個(gè)點(diǎn)的像素點(diǎn)(x-5,y1-5,10,10);并將顏色設(shè)置為青色,再次將其設(shè)置為(p.x,p.y,170,20);設(shè)置顏色為紅色,畫(huà)框(p.x,p.y,170,20);設(shè)置顏色為黑色,在(p.x,p.y+15)寫(xiě)下內(nèi)容“按住鼠標(biāo)即可選擇截圖范圍”。圖片獲取成功就會(huì)在多層菜單欄中顯示出來(lái)。圖片下方顯示可以對(duì)圖片進(jìn)行的操作,分別是存儲(chǔ)、復(fù)制到剪切板、編輯和關(guān)閉,如圖(4)所顯示。圖(4)成功截圖展示圖操作欄四個(gè)按鈕的設(shè)置,注解請(qǐng)看下面:聲明一個(gè)私有的返回值為空的方法initPanel(),方法里聲明四個(gè)按鈕:“保存”、“復(fù)制到剪切板”、“關(guān)閉”、“編輯”。將他們分別賦值給四個(gè)變量使用:save、copy、close、update。然后分別將他們的菜單選項(xiàng)熱鍵設(shè)置為:s、c、x、u聲明一個(gè)新的Jpanel類型的變量buttonPanel,將上邊四個(gè)按鈕添進(jìn)去,然后分別給四個(gè)變量添加四個(gè)動(dòng)作監(jiān)聽(tīng)器。 聲明一個(gè)返回值為空的帶動(dòng)作事件參數(shù)的方法,是個(gè)動(dòng)作監(jiān)聽(tīng)的方法。 在創(chuàng)建一個(gè)新的Object類型的變量source用于接收事件源。 再通過(guò)if語(yǔ)句比對(duì),來(lái)判斷系統(tǒng)改做出設(shè)么樣的動(dòng)作: save調(diào)用對(duì)應(yīng)的存儲(chǔ)模塊; copy調(diào)用對(duì)應(yīng)的拷貝模塊; close則調(diào)用關(guān)閉模塊。5.3截圖的編輯實(shí)現(xiàn)要想對(duì)截圖進(jìn)行編輯,在圖片上面編輯文字時(shí),鼠標(biāo)左鍵點(diǎn)擊“編輯”,出現(xiàn)操作提示窗,先將圖片保存,再編輯文字。主界面設(shè)置代碼及注解:定義了一個(gè)私有的獲取截圖方法,并且聲明一個(gè)截圖對(duì)象,然后把他放到保存之后進(jìn)行編輯(如:添加文字)panel.setBorder(newTitledBorder(border,"設(shè)置",F(xiàn)ont.LAYOUT_LEFT_TO_RIGHT,F(xiàn)ont.LAYOUT_LEFT_TO_RIGHT,font));里面運(yùn)用一個(gè)布局管理器,部件如果想加入其中需要借助GridBagConstraints,利用組件的橫縱坐標(biāo),并設(shè)置了組件所占行列數(shù),也就是截圖的寬度,還有截圖的高度,當(dāng)組件在其格內(nèi)而不能撐滿其格時(shí),通過(guò)fill的值來(lái)設(shè)定填充方式,用戶通過(guò)滑動(dòng)滑塊,查看截圖的各個(gè)部分。同時(shí)也可以利用拖拽的方式,調(diào)整音量和背景亮度等,可以在代碼中生成對(duì)應(yīng)的輸出口。部分按鈕設(shè)置相關(guān)代碼:} 界面以及按鈕的展示圖如下圖(5):圖(5)添加文字界面 通過(guò)調(diào)用父類的繪制事件,并重寫(xiě)父類的繪制函數(shù),調(diào)用了父類的相應(yīng)方法,并且父類的方法中還有可能包含一些默認(rèn)操作,因?yàn)橛行┎僮魇潜仨毜?,繪制的時(shí)候并且,進(jìn)行了非空判斷,對(duì)于繪制的要求 預(yù)覽效果展示圖(6):圖(6)預(yù)覽添加文字5.4截圖的存儲(chǔ)實(shí)現(xiàn) 圖片截取成功之后,鼠標(biāo)左鍵點(diǎn)擊“復(fù)制到剪切板”,出現(xiàn)“已復(fù)制到剪切板”的信息提示,點(diǎn)擊“確認(rèn)”按鈕,即可完成復(fù)制操作。 請(qǐng)看下述代碼及注解: 定義此信息框?qū)τ谟脩舨僮鞯囊粋€(gè)判斷這個(gè)方法的參數(shù),在對(duì)于復(fù)制截圖到剪切板中的時(shí)候,如果圖片為空的話,就提示用戶為空,否則就成功復(fù)制到剪切板。并添加了捕獲異常的控件,如果出現(xiàn)錯(cuò)誤,就提示用戶說(shuō)復(fù)制到系統(tǒng)粘貼板出錯(cuò),控件消失。,"復(fù)制到系統(tǒng)粘帖板出錯(cuò)!!","錯(cuò)誤",JOptionPane.ERROR_MESSAGE);}}Transferable是一個(gè)用于不同存儲(chǔ)介質(zhì)間數(shù)據(jù)傳輸?shù)慕涌冢仨毻ㄟ^(guò)此接口才能實(shí)現(xiàn)兩個(gè)存儲(chǔ)介質(zhì)間的數(shù)據(jù)傳輸,此接口還封裝了數(shù)據(jù)傳輸過(guò)程的具體方式。主要的方法有:(1)ObjectgetTransferData(DataFlavorflavor)返回一個(gè)Transferable數(shù)據(jù)傳輸對(duì)象,參數(shù)則用來(lái)指定數(shù)據(jù)傳輸過(guò)程中的數(shù)據(jù)傳輸格式;(2)DataFlavor[]getTransferDataFlavors()用來(lái)返回一個(gè)DataFlavor數(shù)組;(3)BooleanisDataFlavorSupported(DataFlavorflavor)判斷當(dāng)前用來(lái)傳輸數(shù)據(jù)的Transferable對(duì)象的數(shù)據(jù)傳輸格式是否符合DataFlavor對(duì)象中的幾種格式(stringFlavor,imageFlavor,plainTextFlavor)Transferable對(duì)象是用來(lái)傳輸數(shù)據(jù)的,DataFlavor則封裝于該對(duì)象中用來(lái)指定該對(duì)象傳輸數(shù)據(jù)時(shí)的數(shù)據(jù)的格式展示圖請(qǐng)看下圖(7):圖(7)將截圖保存到剪切板使用word測(cè)試圖片是否成功復(fù)制到剪切板,如圖(8)所示。 圖(8)出現(xiàn)“已復(fù)制到剪切板”的信息,表示該模塊的功能已經(jīng)實(shí)現(xiàn)。截取圖片成功之后,鼠標(biāo)左鍵點(diǎn)擊“存儲(chǔ)”,進(jìn)行圖片的存儲(chǔ),這是會(huì)出現(xiàn)圖片存儲(chǔ)位置的選擇信息,圖片的保存格式也可以進(jìn)行選擇。請(qǐng)看下述注解:定義了一個(gè)保存方法,并在方法中進(jìn)行異常的捕獲,開(kāi)頭的時(shí)候進(jìn)行了保存圖片的獲得判斷,如果它沒(méi)有讀到圖片信息的話,就提示用戶圖片不能為空,否則就跳出這個(gè)方法,然后引入了保存不同類型,不同格式的圖片,并一一進(jìn)行了引入,傳人了this這個(gè)狀態(tài)信息,,并設(shè)置了格式過(guò)濾器,如果是靜態(tài)的圖片就選擇相對(duì)應(yīng)的保存格式,這些格式的判斷方法在代碼中已經(jīng)一一進(jìn)行了判斷,保存格式有jpeg,png,bmp,如果是動(dòng)態(tài)的圖片,就需要就需要保存為gif的格式,并且如果再運(yùn)行過(guò)程中,如果抓到異常,要在控制臺(tái)打印錯(cuò)誤信息?。∑渲行枰O(shè)置格式過(guò)濾器,選擇所需要的格式:這是向用戶可選擇的文件過(guò)濾器列表添加一個(gè)過(guò)濾器,如果應(yīng)該保存該文件就返回true,否則返回false,用戶點(diǎn)擊保存按鈕的時(shí)候,由繼承了這個(gè)過(guò)濾器類上門(mén)的UI調(diào)用此方法,但要確保指定的文件是可見(jiàn)的,不是隱藏的,并要通知對(duì)此事件感興趣的所有偵聽(tīng)器,最后返回一個(gè)bmp對(duì)象,給用戶一個(gè)反饋.這是通過(guò)繼承filechooser類來(lái)讓用戶最終確定保存的格式,給用戶提供了一種簡(jiǎn)單的機(jī)制,并返回用戶保存路徑,通過(guò)用戶選擇的保存格式,通過(guò)它相對(duì)應(yīng)的過(guò)濾器,如保存GIG格式的過(guò)濾器privateclassGIFfilter并且寫(xiě)了一個(gè)暫時(shí)類,來(lái)顯示當(dāng)前的屏幕圖像,TEMP,引證了過(guò)濾器的判斷,最終實(shí)現(xiàn)jpeg,bmp,png,和動(dòng)態(tài)圖片gif,的保存。展示圖請(qǐng)看下面圖(9):圖(9) 截圖保存過(guò)程圖 點(diǎn)擊保存后,進(jìn)入到目錄下進(jìn)行查看,查看是否保存成功。圖(9)查看已保存的截圖 經(jīng)查看已經(jīng)成功存儲(chǔ)6.系統(tǒng)測(cè)試系統(tǒng)測(cè)試,即整合起來(lái)眾多的元素展開(kāi)測(cè)試,測(cè)試他們集合在一起能否正常運(yùn)行,這些內(nèi)容包括各種方面種種信息,比如,系統(tǒng)軟件和應(yīng)用軟件、電腦硬件、外接鼠標(biāo)鍵盤(pán)等硬件、Internet等。系統(tǒng)測(cè)試將會(huì)對(duì)整個(gè)系統(tǒng)進(jìn)行測(cè)試,主要是為了測(cè)試系統(tǒng)能否滿足目標(biāo)需求,并從中發(fā)現(xiàn)漏洞和不足之處,進(jìn)而針對(duì)性的進(jìn)行優(yōu)化和改進(jìn)。6.1截圖軟件系統(tǒng)測(cè)試 系統(tǒng)測(cè)試的目的是對(duì)該軟件的功能進(jìn)行檢測(cè),是否能夠?qū)崿F(xiàn)需求功能。分別進(jìn)行截圖保存的測(cè)試,復(fù)制的測(cè)試,編輯(添加文字)的測(cè)試。6.1.1保存選項(xiàng)測(cè)試圖片截取之后,出現(xiàn)“成功存儲(chǔ)”,則表示圖片已經(jīng)儲(chǔ)存,同時(shí)需要對(duì)圖片進(jìn)行命名,如果不命名就不完成儲(chǔ)存;如果存儲(chǔ)失敗將會(huì)出現(xiàn)“未能成功儲(chǔ)存”的提示信息。圖(10)截圖保存 圖(11)成功保存經(jīng)運(yùn)行測(cè)試,證明保存截圖功能沒(méi)有問(wèn)題,已經(jīng)成功實(shí)現(xiàn)。6.1.2復(fù)制到剪切板選項(xiàng)測(cè)試在圖片已經(jīng)截取之后,出現(xiàn)“成功存儲(chǔ)”,則為已經(jīng)復(fù)制到剪切板;出現(xiàn)“未能復(fù)制到剪切板”,則為失敗。圖(12) 復(fù)制到剪切板圖(13)復(fù)制到剪切板成功經(jīng)過(guò)運(yùn)行測(cè)試,證明復(fù)制到剪切板功能沒(méi)有問(wèn)題,已經(jīng)成功實(shí)現(xiàn)。6.1.3編輯選項(xiàng)測(cè)試在圖片上添加文字。如果文字在圖片上面顯示,則為編輯成功,否則編輯功能未能實(shí)現(xiàn)。圖(14)添加文字成功經(jīng)過(guò)運(yùn)行測(cè)試,證明添加文字功能沒(méi)有問(wèn)題,已經(jīng)成功實(shí)現(xiàn)。6.2測(cè)試評(píng)價(jià)測(cè)試結(jié)果顯示,需求功能已經(jīng)滿足使用的需要,能夠進(jìn)行截圖、存儲(chǔ)和編輯等操作。但是功能還不夠全面,同時(shí),外觀還不夠美化,以上兩方面還需要進(jìn)行優(yōu)化和完善,以為用戶提供更加優(yōu)質(zhì)的服務(wù)?,F(xiàn)階段的測(cè)試結(jié)果表明,本截圖工具中沒(méi)有嚴(yán)重的漏洞。結(jié)論在諸多朋友和老師的幫助之下,終于完成了這個(gè)截圖工具的設(shè)計(jì)和制作,在此過(guò)程中,我將軟件工程的相關(guān)理論和技術(shù)作為基礎(chǔ),制定設(shè)計(jì)和制作計(jì)劃,一步一步的按照計(jì)劃完成,嚴(yán)格根據(jù)整體的制作計(jì)劃執(zhí)行。雖然最終完成了這一工具的設(shè)計(jì)和調(diào)試,但是在過(guò)程中我還是出現(xiàn)很多錯(cuò)誤,我發(fā)現(xiàn)自己對(duì)開(kāi)發(fā)工具相關(guān)理論和工具的掌握程度還有待提升,有很大一部分時(shí)間的設(shè)計(jì)效率不高,將寶貴的時(shí)間浪費(fèi)了,同時(shí)在系統(tǒng)擴(kuò)充時(shí),也出現(xiàn)了問(wèn)題。我需要繼續(xù)提升自身的專業(yè)水平,學(xué)習(xí)多方面的專業(yè)知識(shí),為未來(lái)進(jìn)行更好的設(shè)計(jì)做準(zhǔn)備。在這次的畢業(yè)設(shè)計(jì)的過(guò)程中,我發(fā)現(xiàn)自己還有很多的不足,但是畢業(yè)設(shè)計(jì)的成功完成也提升了我的信心。未來(lái),我還有很大的上升空間,繼續(xù)堅(jiān)持,繼續(xù)努力。參考文獻(xiàn)\h程新黨;\h程強(qiáng);\h黃河濤.基于Windows圖形驅(qū)動(dòng)的屏幕截圖技術(shù)(2005年12期)\h魏威.利用C#和GDI+制作屏幕截圖小軟件.圖形圖像處理(2013年23期)張之.QQ屏幕截圖的秘密.CFan加油站(2007年1

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論