影音先锋男人资源在线观看,精品国产日韩亚洲一区91,中文字幕日韩国产,2018av男人天堂,青青伊人精品,久久久久久久综合日本亚洲,国产日韩欧美一区二区三区在线

《圖片管理系統(tǒng)》需求分析說(shuō)明書(shū)

上傳人:ya****h 文檔編號(hào):114996467 上傳時(shí)間:2022-06-30 格式:DOCX 頁(yè)數(shù):43 大?。?04.40KB
收藏 版權(quán)申訴 舉報(bào) 下載
《圖片管理系統(tǒng)》需求分析說(shuō)明書(shū)_第1頁(yè)
第1頁(yè) / 共43頁(yè)
《圖片管理系統(tǒng)》需求分析說(shuō)明書(shū)_第2頁(yè)
第2頁(yè) / 共43頁(yè)
《圖片管理系統(tǒng)》需求分析說(shuō)明書(shū)_第3頁(yè)
第3頁(yè) / 共43頁(yè)

本資源只提供3頁(yè)預(yù)覽,全部文檔請(qǐng)下載后查看!喜歡就下載吧,查找使用更方便

15 積分

下載資源

資源描述:

《《圖片管理系統(tǒng)》需求分析說(shuō)明書(shū)》由會(huì)員分享,可在線閱讀,更多相關(guān)《《圖片管理系統(tǒng)》需求分析說(shuō)明書(shū)(43頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、圖片管理系統(tǒng)》需求分析說(shuō)明書(shū) 需求分析說(shuō)明說(shuō) [友好創(chuàng)達(dá)圖片管理系統(tǒng)] 需求分析說(shuō)明書(shū) 北京友好創(chuàng)達(dá)科技有限公司 數(shù)字化生產(chǎn)中心 二零一三年二月 1 需求分析說(shuō)明說(shuō) 摘要 圖片管理系統(tǒng)主要功能就是實(shí)現(xiàn)對(duì)計(jì)算機(jī)上常見(jiàn)的圖像文件進(jìn)行統(tǒng)一的管理操作,包括瀏覽,分類,信息的提取,查看方式的變換等,由于圖片格式眾多,而且常見(jiàn)的系統(tǒng)操作常常不能將非圖片格式的文件進(jìn)行過(guò)濾,給圖片的查看造成了一定的不便,而且通常的查看文件屬性需要比較,麻煩的操作步驟,我們?cè)谲浖谱鬟^(guò)程中將類似的操作作為默認(rèn)的顯示,另外可以按照自己的需要隨時(shí)將工具欄,狀態(tài)欄,目錄樹(shù)區(qū)域,預(yù)覽區(qū)域選擇為顯示或者以隱藏,使圖片

2、視圖區(qū)域顯示面積增大。 另外我們?cè)O(shè)計(jì)了文件夾下所有文件的屬性信息輸出到一個(gè)文本文件中,可以方便的有針對(duì)性地對(duì)文件的屬性信息進(jìn)行處理,我們還設(shè)計(jì)了文件批量重命名功能,在文件命名雜亂的時(shí)候可以以一種有序的方式將文件名重新命名排序。圖片的瀏覽往往會(huì)出現(xiàn)希望獲取的顏色值的信息,顏色指示器的設(shè)計(jì)即為實(shí)現(xiàn)此功能,可以在顏色指示框內(nèi)顯示當(dāng)前鼠標(biāo)所在位置的顏色顯示,而RGB值的數(shù)值表示也為我們的工作提供了很大的方便。 實(shí)現(xiàn)此系統(tǒng)除了必要的編程知識(shí)以外,還要獲取多媒體,計(jì)算機(jī)文件系統(tǒng),存儲(chǔ)原理,等多方面的知識(shí)。我們?cè)谧约杭夹g(shù)水平上進(jìn)行了比較全面的探索,基本上實(shí)現(xiàn)了一個(gè)圖片管理系統(tǒng)所應(yīng)有的功能,并在軟件的穩(wěn)定

3、性上,功能的豐富程度上,做了一定的努力和探索。 關(guān)鍵字:圖片格式,名字外殼空間,RGB,REPORT視圖,動(dòng)態(tài)鏈接庫(kù) 2 需求分析說(shuō)明說(shuō) 1 緒論 1.1 背景及意義 圖像是對(duì)客觀存在的對(duì)象的一種相似形描述,可以被存儲(chǔ),復(fù)制,加工.它是用各種觀察系統(tǒng)以不同形式和手段觀測(cè)世界而獲得的.照片,繪畫(huà),電視畫(huà)面等都是圖像的直觀例子.當(dāng)然還包括對(duì)一些視覺(jué)無(wú)法直接觀察到的物理圖像和空間圖像.比如紅外圖像,電磁場(chǎng)的圖形描述.科學(xué)研究表明,人們通過(guò)視覺(jué)系統(tǒng)獲得的信息量占所有信息量的75%以上.這說(shuō)明圖像對(duì)人們認(rèn)知世界是極其重要的一個(gè)途徑. 二十世紀(jì)中葉產(chǎn)生的計(jì)算機(jī)技術(shù),自從發(fā)明以來(lái)就顯示出蓬勃的

4、生命力,圖像的技術(shù)也在這個(gè)新的技術(shù)平臺(tái)上有了新的應(yīng)用,為解放人類生產(chǎn)力提供了重要?jiǎng)恿?計(jì)算機(jī)技術(shù)以及微型芯片的不斷進(jìn)步,相關(guān)產(chǎn)品的大規(guī)模普及,使相關(guān)的應(yīng)用領(lǐng)域迅速擴(kuò)展到家用娛樂(lè)方面,為人們的生活添加了更加豐富的元素.目前數(shù)碼相機(jī)的像素水平已經(jīng)足以為我們提供足夠清晰的數(shù)碼照片,而計(jì)算機(jī)存儲(chǔ)容量的增加為我們的存儲(chǔ)提供了方便,而且計(jì)算機(jī)上功能強(qiáng)大的圖像瀏覽,管理,處理軟件也方便了人們的需求.再加上網(wǎng)絡(luò)上資源極大的豐富,風(fēng)格各異的藝術(shù)設(shè)計(jì),攝影藝術(shù)等,我們需要管理的圖片數(shù)量越來(lái)越大,當(dāng)然隨之而來(lái)的圖片的分類,檢索,相關(guān)信息的查看,圖片名字的批量命名也成了人們的實(shí)際需求. 1.2 同類系統(tǒng)發(fā)展動(dòng)態(tài)

5、1.2.1網(wǎng)絡(luò)管理(即C/S架構(gòu)):主要以當(dāng)前網(wǎng)絡(luò)流行的網(wǎng)絡(luò)相冊(cè)為主,各大門戶,社交網(wǎng)站,都提供了照片的而存儲(chǔ),及瀏覽.便于實(shí)現(xiàn)跨地域?yàn)g覽以及分享.比如各大門戶都有給用戶提供相冊(cè)功能,使用戶可以方便的上傳自己的圖片,而且用戶只要以用戶名密碼登陸可以在任何地點(diǎn)獲取到自己的圖片,而且可以方便的設(shè)立共享和非共享,是可以方便的與人共享自己的圖片.有的郵件系統(tǒng)提供商將此功能集成在郵箱里.而同時(shí)時(shí)下比較流行的博客系統(tǒng),社交網(wǎng)站,也會(huì)允許用戶提供自己的圖像空間.也有不少網(wǎng)絡(luò)硬盤提供商免費(fèi)提供網(wǎng)絡(luò)硬盤,存儲(chǔ)文件,圖像當(dāng)然可以作為文件上傳,但是只能以名字判 1 需求分析說(shuō)明說(shuō)斷內(nèi)容,只有將圖片現(xiàn)在下來(lái)才可以

6、看到圖像.優(yōu)缺點(diǎn),方便共享,異地訪問(wèn),網(wǎng)絡(luò)速度限制,除了網(wǎng)絡(luò)硬盤提供可以保證完整性以外,有些系統(tǒng)會(huì)在用戶上傳以前對(duì)圖像的大小進(jìn)行處理,如果用戶對(duì)圖像質(zhì)量要求嚴(yán)格的話,會(huì)有影響.網(wǎng)絡(luò)安全方面的原因,圖像的丟失,泄露,個(gè)人隱私的泄露,操作耗時(shí),畢竟要通過(guò)遠(yuǎn)端進(jìn)行相關(guān)操作,有一定的滯后性.有待于網(wǎng)速的進(jìn)一步提升. 1.2.2 單機(jī)版軟件(單機(jī)模式):主要以本地主機(jī)內(nèi)存儲(chǔ)的圖片為對(duì)象,功能強(qiáng)大.有些甚至有簡(jiǎn)單的圖片處理功能.在本地安裝的瀏覽管理軟件主要是打開(kāi)指定的文件,或者在某個(gè)文件夾下進(jìn)行管理活動(dòng). 2 基礎(chǔ)知識(shí)描述,以及相關(guān)軟件介紹主要對(duì)圖像相關(guān)的一些概念進(jìn)行闡述,從最基本的光與色彩,人的視覺(jué)

7、知,顏色空間,圖像分辨率,像素,不同色彩空間的轉(zhuǎn)換,圖形與圖像的區(qū)別,主要的圖像格式.作為文件被存儲(chǔ)在磁盤空間上的圖像文件的存儲(chǔ)方式,文件系統(tǒng)相關(guān),shell相關(guān)以 X mr. 及理論上一個(gè)圖像信息管理應(yīng)該具有的功能。再就是寫(xiě)作論文以及實(shí)現(xiàn)軟件時(shí)涉及 的軟件,VC++6.0,MS-W0RD,CreatelnstallFree程序打包軟件。2.1RGB模型 任何顏色C都可以可用光電三原色的三種基色:紅(R=red:700nm)、綠 (G二green:546.1nm)、藍(lán)(B二blue:435.8nm)配出: C=rR+gG+bB 公式(3-1) 其中,r、g、b為三基色的比

8、例系數(shù),滿足r+g+b=1;R、G、B為三基色的單位,分別為1、4.5907、0.060光瓦(因?yàn)橛眉t、綠和藍(lán)三基色光匹配成白光時(shí), 2 需求分析說(shuō)明說(shuō) 所需要的紅、綠和藍(lán)基色光的光通量之比為1?4.5907?0.0601)。用光電三原色混色,滿足加色原理(參見(jiàn)圖2-6): S ,品紅 品紅 圖2-6光電三原色混色的加色原理 如果每個(gè)像素的每個(gè)顏色分量(R,G,B)用二進(jìn)制的1位來(lái)表示,那末每個(gè)顏色的分量只有“1”和“0”這兩個(gè)值。這也就是說(shuō),每種顏色的強(qiáng)度是100%,或者是0%。在這種情況下,每個(gè)像素所顯示的顏色是8種可能出現(xiàn)的顏色之一,如下表所示。 相加色: RGB00

9、0001010011100101110111顏色黑藍(lán)綠青紅品紅黃白表2-3相加色 RGB模式適用于顯示器這類發(fā)光物體。 RGB是由三種基本顏色Red紅、Green綠、Blue藍(lán)組成,每種顏色的亮度大小用數(shù)字0-255表示,共有1670萬(wàn)種顏色。 R=G=B=0黑色 R=G=B=255白色 0

10、=0%白色 黑色C=M=Y=K=100% CMY指色料三原色:青色(Cyan)、品紅(Magenta)和黃色(Yellow)。用這三種-7):基色混色,滿足減色原理(參見(jiàn)圖2 -7色料三原色混色的減色原理圖2 CMY模型主要用于打印和印刷彩色圖像。用彩色墨水或顏料進(jìn)行混合,這樣得到的顏色稱為相減色。在理論上說(shuō),任何一種顏色都可以用這三種基本顏料按一定比例混合得到。用這種方法產(chǎn)生的顏色之所以稱為相減色,乃是因?yàn)樗鼫p少了為視覺(jué)系統(tǒng)識(shí)別顏色所需要的反射光。CMY以白色為底色減,即CMY均為0是白色,均為100%是黑色(但在實(shí)際中,由于油墨的純度等問(wèn)題這樣得不到純的黑色,因此引入K)彩色打

11、印機(jī)采用的就是這種原理,印刷彩色圖片也是采用這種原理。按每個(gè)像素每種顏色用1位表示,相減法產(chǎn)生的8種顏色如下表所示。由于彩色墨水和顏料的化學(xué)特性,用等量的三基色得到的黑色不是真正的黑色,因此在印刷術(shù)中常加一種真正的黑色(blackink),所以CMY又寫(xiě)成CMYK(其中K=black黑)。 青品黃相減 4 需求分析說(shuō)明說(shuō) 色紅色色 000白 001黃 010品紅 011紅 100青 101綠 110藍(lán) 111黑 表2-4相減色 相加色與相減色之間有一個(gè)直接關(guān)系,表2-5所示。利用它們之間的關(guān)系,可以把顯示的顏色轉(zhuǎn)換成輸出打印的顏色。相加混色和相減混色之間成對(duì)出現(xiàn)互補(bǔ)

12、色。例如,當(dāng)RGB為1?1?1時(shí),在相加混色中產(chǎn)生白色,而CMY為1?1?1時(shí),在相減混色中產(chǎn)生黑色。從另一個(gè)角度也可以看它們的互補(bǔ)性:從表4-7中可以看到,在RGB中的顏色為1的地方,在CMY對(duì)應(yīng)的位置上,其顏色值為0。例如RGB為0?1?0時(shí),對(duì)應(yīng)CMY為1?0?1。 相加混色RGB相減混色CMY生成顏色 000 111 黑 八、、 001 110 藍(lán) 010 101 綠 011 100 青 100 011 紅 101 010 品紅 110 001 黃 111 000 白 5 需求分析說(shuō)明說(shuō) 表2-5相加色與相減色的關(guān)系 2.

13、3 顏色空間的轉(zhuǎn)換 RGB??CMY的互相轉(zhuǎn)換 RGB?CMY:C=1-RM=1-GY=1-B CMY?RGB:R=1-CG=1-MB=1-Y 2.4 圖片的格式,相關(guān)標(biāo)準(zhǔn),以及比較 常用的圖像文件格式很多,JPG,GIF,BMP,PNG, 2.4.1 BMP 位圖(Bitmap)文件(*.BMP)是由Microsoft與IBM為Windows和PS/2制訂的圖像文件格式。支持灰度圖、偽彩圖和24位的真彩圖,可采用RLE無(wú)損壓縮(16/256色圖)或不壓縮(黑白/真彩圖)。格式簡(jiǎn)單、顯示快,在Windows平臺(tái)中使用廣泛。缺點(diǎn)是文件大,占存儲(chǔ)空間和傳輸帶寬。一般用于小尺寸圖像和中

14、間/臨時(shí)圖像。 2.4.2 GIF 可交換圖形格式(GIF二GraphicsInterchangeFormat),由CompuServe公司于87年起定義,現(xiàn)有a與89a兩個(gè)主要版本,采用變長(zhǎng)LZW壓縮算法。限制:最多256(索引)色、64K*64K像素。無(wú)損壓縮、文件小、使用廣泛(尤其是網(wǎng)絡(luò)),有大量圖片庫(kù)(美人照、景物特寫(xiě))。 2.4.3 TIF 標(biāo)記圖像文件格式(TIFF=TagImageFileFormat)(*。TIF),由Aldus和Microsoft聯(lián)合開(kāi)發(fā),支持黑白、索引色、灰度、真彩圖,可校正顏色和調(diào)色溫,支持多種壓縮編碼(Huffman、LZW、RLE)。常用于對(duì)質(zhì)

15、量要求高的專業(yè)圖像的存儲(chǔ)。 6 需求分析說(shuō)明說(shuō) 優(yōu)點(diǎn):通用、高質(zhì)、無(wú)損壓縮; 缺點(diǎn):標(biāo)準(zhǔn)不統(tǒng)一、格式復(fù)雜、解碼難。 2.4.4 JPEG JPEG(*.JPG)主要采用DCT(DiscreteCosineTransform離散余弦變換)進(jìn)行有損壓縮,壓縮比可調(diào)整,在壓縮10~30倍后,圖像效果仍然不錯(cuò)。適用于灰度圖與真彩圖,使用非常廣泛(尤其是網(wǎng)絡(luò))。一幅727*525(NTSCTV)的24位真彩圖,在 BMP、GIF和JPEG三種不同圖像文件格式下,文件大小和圖像壓縮比都差別很大。參見(jiàn)表2-6。 圖像格式文件大小壓縮比品質(zhì) BMP1,145KB1:124位原圖 GIF24

16、0KB4。77:1256色 155KB7。39:1高質(zhì)(?原圖) JPEG 58KB19。74:1標(biāo)準(zhǔn)(?GIF) 表2-6三種圖像格式的比較 2.4.5 PNG PNG(PortableNetworkGraphicFormat可移植網(wǎng)絡(luò)圖形格式,讀成"ping")是W3C(WorldWideWebConsortium萬(wàn)維網(wǎng)協(xié)會(huì))制定的一種采用無(wú)損壓縮的圖像存儲(chǔ)文件格式,支持多達(dá)16位深度的灰度圖像和48位深度的彩色圖像,并且還可支持多達(dá)16位的a通道數(shù)據(jù)。PNG可以看作是GIF的一種推廣,它繼承了GIF的主要優(yōu)點(diǎn),又增加一些GIF所不具備的特性,但不支持動(dòng)畫(huà)。推出PNG的目的是希

17、望替代GIF(不支持真彩色)和TIFF(太復(fù)雜)這兩種也采用無(wú)損壓縮的圖像文件格式。 7 需求分析說(shuō)明說(shuō) 3模塊的劃分聯(lián)系及涉及的技術(shù)通常軟件的設(shè)計(jì)包括功能的設(shè)計(jì)與界面的設(shè)計(jì)兩大部分,功能方面主要依據(jù)需求而設(shè)計(jì),界面方面是在功能的基礎(chǔ)上根據(jù)人機(jī)交互方面的規(guī)則進(jìn)行,主要以用戶操作簡(jiǎn)便,容易上手,所以開(kāi)發(fā)過(guò)程中需要遵循軟件行業(yè)的開(kāi)發(fā)規(guī)范,是使用者比較容 易了解掌握。我們的圖片管理系統(tǒng)目的就是想制作出一款軟件使人們可以不用花費(fèi) 多余的操作就輕松實(shí)現(xiàn)個(gè)人計(jì)算機(jī)上的圖片的管理。 8 需求分析說(shuō)明說(shuō) 3.1軟件總體功能的結(jié)構(gòu): 界面視圖 菜單欄 FILEVIEWHELP HELPT

18、OOLBARABOUTNEW DOCUMENT INFOROUTSTATUSBAR BATCHRENAMEDIRECTORY EXITPREVIEW 工具欄 終止線程新建 AboutREPOTRT ICON顏色指示器 路徑指示器 客戶區(qū) DIRECTORYVIEWPREVIEW 狀態(tài)欄 RGB時(shí)鐘 圖3-1軟件總體功能的結(jié)構(gòu) 以上為軟件界面的布局為導(dǎo)向的軟件結(jié)構(gòu)圖,基本上是軟件實(shí)現(xiàn)以后界面的映射,這里僅僅能反應(yīng)界面上的顯示,而真正的背后的個(gè)功能模塊,以及各模塊之間的 聯(lián)系需要以別的結(jié)構(gòu)圖來(lái)表示。在這里軟件的界面與背后代碼的聯(lián)系,軟件的功能 9 需求分析說(shuō)明說(shuō)

19、 與代碼的實(shí)現(xiàn),軟件各模塊之間的聯(lián)系均為立體的網(wǎng)狀的關(guān)系。所以我們盡量的以 圖表的形式,示意圖的形式并配以文字的介紹來(lái)力圖表達(dá)清楚自己的設(shè)計(jì)想法。 以下是菜單欄的函數(shù)對(duì)照示意圖。 3.1.1 FILE各功能與響應(yīng)函數(shù)的對(duì)應(yīng): CThumbViewerView::OnFileNew() FILE NEW CThumbViewerView::OnOut() INFOROUT CThumbViewerView::OnBatch() BATCHRENAME CMainFrame::OnClose() EXIT 圖3-2FILE各功能與響應(yīng)函數(shù)的對(duì)應(yīng) 3.1.2 VIEW各

20、功能與響應(yīng)函數(shù)的對(duì)應(yīng): MFC框架內(nèi)部實(shí)現(xiàn) VIEW TOOLBAR MFC框架內(nèi)部實(shí)現(xiàn) STATUSBAR CMainFrame::OnViewDirectoryBar() DIRECTORYBAR CMainFrame::OnViewPreviewBar() PRIVIEWBAR -3各功能與響應(yīng)函數(shù)的對(duì)應(yīng)圖3 10 需求分析說(shuō)明說(shuō) 3.1.3 HELP各功能與響應(yīng)函數(shù)的對(duì)應(yīng): CThumbViewerApp::OnAppAbout() HELP HELP CThumbViewerView::OnMENUITEMhelp() HELPDOCUMENT

21、圖3-4各功能與響應(yīng)函數(shù)的對(duì)應(yīng) 以下是工具欄上的函數(shù)功能對(duì)應(yīng)圖: 11 需求分析說(shuō)明說(shuō) 3.1.4TOOLBAR的各功能與函數(shù)對(duì)應(yīng)圖: CThumbViewerView::OnFileNew()TOOLBAR 新建(NEW) CMainFrame::OnStopThread()STOPTHREAD CThumbViewerApp::OnAppAbout() ABOUT CThumbViewerView::OnReport() REPORT CThumbViewerView::Onthumb() THUMB CMainFrame::OnUpdateFileNew(CC

22、mdUI*pCmdUI)COLORSHOW CMainFrame::OnUpdateFileNew(CCmdUI*pCmdUI) PATHSHOW 圖3-5TOOLBAR的各功能與函數(shù)對(duì)應(yīng)圖 需求分析說(shuō)明說(shuō) 12 3.1.5客戶區(qū)CLIENTAREA的各功能與函數(shù)對(duì)應(yīng)圖: CLIENTAREA CDirTreeCtrl::Initialize() CDirTreeCtrl::OnSelchanged(NMHDR*,LRESULT*) DIRECTROYTREECDirTreeCtrl::RefreshShellRoot(pidlRoot,bIncludeFiles)

23、CDirTreeCtrl::ExpandItem(HTREEITEMhItem) CDirTreeCtrl::DeleteChildren(HTREEITEMhParent) CDirTreeCtrl::PopulateItem(HTREEITEMhParent)CDirTreeCtrl::FillItem(TVITEM&,LPCITEMIDLIST, IShellFolder*,LPCITEMIDLIST) CDirTreeCtrl::PreTranslateMessage(MSG*pMsg) CPreviewBar::OnCreate(LPCREATESTRUCT) LPDRA

24、WITEMSTRUCT)CPreviewBar::OnDrawItem(int, PREVIEWFUNCCPreviewBar::OnSize(UINTnType,intcx,intcy) CPreviewBar::OnLButtonUp(UINT,CPoint) CThumbViewerView::OnInitialUpdate() CThumbViewerView::Create(lpszClassName,lpszWindowName,LISTVIEWdwStyle,rect,pParentWnd,nID,pContext) CThumbViewerView::LoadThum

25、bImages() CThumbViewerView::OnFileNew() CThumbViewerView::OnItemchanged(NMHDR*,LRESULT*pResult) CThumbViewerView::TerminateThread() CThumbViewerView::OnLButtonDblClk(UINTnFlags,CPointpoint)CThumbViewerView::PreTranslateMessage(MSG*pMsg) CThumbViewerView::OnSelectTree(wParam,lParam)CThumbViewe

26、rView::GetItemInfor(inti,intnum) voidCThumbViewerView::OnDestroy() CThumbViewerView::OnMENUITEMhelp() CThumbViewerView::OnReport() CThumbViewerView::Onthumb() CThumbViewerView::OnColumnclick(NMHDR*,LRESULT*)CThumbViewerView::OnUpdateReport(CCmdUI*pCmdUI)CThumbViewerView::OnOut() CThumbViewerVi

27、ew::OnBatch() 13 需求分析說(shuō)明說(shuō) 圖3-6客戶區(qū)CLIENTAREA的各功能與函數(shù)對(duì)應(yīng)圖3.1.6STATUS的各功能與函數(shù)對(duì)應(yīng)圖: CMainFrame::OnUpdateFileNew(CCmdUI*pCmdUI) STATUS RGBVALUE CMainFrame::OnTimer(UINTnIDEvent) TIMESHOW 圖3-7STATUS的各功能與函數(shù)對(duì)應(yīng)圖 3.2 軟件功能模塊的設(shè)計(jì) 這款軟件主要包括以下七種功能,由于技術(shù)水平,以及時(shí)間,經(jīng)驗(yàn)的限制我們實(shí)現(xiàn)了大部分模塊的功能,沒(méi)有實(shí)現(xiàn)的部分可以作為我們今后努力的方向。也為我們今后這個(gè)軟件

28、的繼續(xù)改進(jìn),功能豐富提供一個(gè)基礎(chǔ)。 功能的描述,和軟件真正的實(shí)現(xiàn)是有不一致的,軟件功能的描述更著重于用戶體驗(yàn),以及用戶的要求,而實(shí)現(xiàn)部分當(dāng)然會(huì)遵循這個(gè)需求進(jìn)行設(shè)計(jì),但是在實(shí)現(xiàn)時(shí)又會(huì)因?yàn)閷?shí)際情況進(jìn)行重新整合,比如有些功能會(huì)交叉,而有的會(huì)放在別的模塊里進(jìn)行實(shí)現(xiàn)??紤]到軟件實(shí)際編寫(xiě)的過(guò)程,要做好這兩者之間的對(duì)應(yīng)。,而且還有一種情況是客戶要求的功能是建立在軟件實(shí)現(xiàn)上的,勢(shì)必個(gè)功能模塊要與軟件創(chuàng)建時(shí)某些系統(tǒng)自身的功能聯(lián)系。 3.2.1目錄樹(shù)功能模塊 圖像文件雖然展現(xiàn)出來(lái)的是萬(wàn)紫千紅的景色,或者是精彩絕倫的設(shè)計(jì),但是它在計(jì)算機(jī)磁盤上的存儲(chǔ)確實(shí)和其他文件是一樣的,通常情況下這些文件是放在某個(gè) 14

29、 需求分析說(shuō)明說(shuō) 文件夾下面的,而如果我們使用平時(shí)的使用方式,依次點(diǎn)擊進(jìn)入到那個(gè)目錄下會(huì)需要多次的點(diǎn)擊,比如計(jì)算機(jī)啟動(dòng)以后我們會(huì)首先從桌面\我的電腦\x盤分區(qū)\X文件夾\x圖片,每次都需要雙擊,并且當(dāng)某個(gè)目錄下文件夾眾多時(shí),我們需要滾動(dòng)鼠標(biāo)滑輪,尋找目標(biāo)文件夾。當(dāng)然我們可以使用windows自帶的文件查看方式需選擇各種查看方式,而且當(dāng)你要返回上一個(gè)文件夾或者后退時(shí),都需要移動(dòng)較大的距離。 我們選擇使用類似與資源管理器的目錄樹(shù)列表,就可以方便的解決這個(gè)問(wèn)題,當(dāng)我們要進(jìn)入某個(gè)文件夾時(shí)只需要點(diǎn)擊他的父文件夾前面的加號(hào),即可輕松打開(kāi),以列表的形式展示可以讓我們快速的找到目標(biāo)文件夾?;赝藭r(shí)更方便,只

30、要選擇上一級(jí)目錄即可跳出,而且當(dāng)我們要迅速跳轉(zhuǎn)到其他分區(qū),文件夾時(shí)效率更加高效。 我們這個(gè)版本只是提供目錄的伸展,折疊,以及對(duì)包括對(duì)主存儲(chǔ)器以外的存儲(chǔ)器地支持,包括光盤,可移動(dòng)磁盤,但是局域網(wǎng)內(nèi)共享的文件的查閱還不行,因?yàn)檫@涉及到了網(wǎng)絡(luò)方面的技術(shù)。暫時(shí)還不能提供文件夾相關(guān)的操作,比如復(fù)制,刪除,文件的拖放等。 目錄樹(shù)區(qū)域的大小是可以通過(guò)鼠標(biāo)點(diǎn)擊他的邊框進(jìn)行拖放的。而且只要我們選擇了菜單欄上的狀態(tài)菜單可以控制目錄樹(shù)的顯示和隱藏。 當(dāng)我們使用目錄樹(shù)時(shí),我們選擇的消息會(huì)通過(guò)文檔類視圖向文件夾下的各項(xiàng)目信息顯示于右邊的試圖模塊里。 3.2.2 預(yù)覽欄功能模塊 我們通常使用的microsoft

31、的圖片查看器可以使用縮放功能,但是當(dāng)一張圖片縮小到自身大小的時(shí)候,我們便沒(méi)有辦法縮小,雖然繼續(xù)縮小會(huì)影響圖像的質(zhì)量但是我們?cè)趯?shí)際操作過(guò)程中的確有是圖片縮小的需求。通常的情況下,我們只能去選擇圖像處理軟件比如photoshop,firewoks等,但就為這一個(gè)需求去安裝那么龐大的住那業(yè)軟件,以及對(duì)系統(tǒng)資源的占用,都是極不合算的。所以我們?cè)陬A(yù)覽右邊視圖模塊選擇的目標(biāo)圖像文件時(shí),不僅僅可以顯示他們,而且可以通過(guò)拖拉preview欄的大小實(shí)現(xiàn)圖片顯示大小的縮放。這一功能在使用過(guò)程中是沒(méi)有直接通過(guò)滾輪調(diào)整大小方便,在以后的版本改進(jìn)計(jì)劃中會(huì)逐步加入的。同上一個(gè)目錄樹(shù)模塊相同,他的顯示以及隱藏也可以通過(guò)菜單

32、欄上狀態(tài)菜單的選擇實(shí)現(xiàn)。 15 需求分析說(shuō)明說(shuō) 3.2.3 視圖欄功能模塊 視圖欄模塊可以說(shuō)是整個(gè)軟件的核心部分,因?yàn)檐浖哪繕?biāo)就在管理上,所以我們要在這個(gè)模塊上實(shí)現(xiàn)多樣方式的查看,而這個(gè)模塊也是和其他幾個(gè)模塊聯(lián)系最頻 繁的一個(gè)。它可以接受工具欄上的兩個(gè)查看方式按鈕的選擇消息,變換文件夾下文 件序列的顯示方式,默認(rèn)的查看方式是縮略圖顯示,而當(dāng)選擇Report模式時(shí)首先在默認(rèn)的狀態(tài)下,只顯示目標(biāo)文件的名字。此時(shí)會(huì)計(jì)算各個(gè)目標(biāo)的區(qū)域位置,為顯示tooltip提示做準(zhǔn)備,而當(dāng)我們?cè)诠ぞ邫谏线x擇詳細(xì)信息查看方式時(shí),將會(huì)把所有的項(xiàng)目以列表形式列出,列出的文件屬性有名字,大小,文件類型,上次修

33、改時(shí)間,圖像的寬高,圖像的分辨率。這時(shí)候由于各項(xiàng)信息很明顯就不需要tooltip的顯示了。 除了顯示以外,如果我們需要使用系統(tǒng)自帶的圖片查看器查看,我們可以雙擊目 標(biāo)圖像文件。 3.2.4 信息輸出功能模塊 我們有時(shí)候會(huì)需要將文件夾以及其下的文件進(jìn)行遍歷列表輸出,形成txt文檔,或者Html文檔的形式存放。所以可以初步的實(shí)現(xiàn)在一個(gè)文件夾下的文件列表輸出。3.2.5文件修改功能模塊 文件修改包括兩部分:文件內(nèi)容的修改,文件屬性信息的修改。 (1) 文件內(nèi)容的修改使之使用圖像處理的方法對(duì)圖像做出有限局部的修改,比如添加文字,添加日期。修改圖片局部的瑕疵,進(jìn)行簡(jiǎn)單的色彩處理,灰度處理,格

34、式轉(zhuǎn)換等。這一部分的功能需要對(duì)圖像處理有一定的認(rèn)識(shí),這個(gè)功能我沒(méi)有實(shí)現(xiàn)。 (2) 文件屬性信息的修改:主要集中在名字的修改,最重要的需求是名字的批量命名。目前的圖片分類方法還是主要集中在以文件夾的形式進(jìn)行分類存放。批量命名功能目前只能簡(jiǎn)單的以數(shù)字序列命名,這離實(shí)際的功能需求還有一定的距離,因?yàn)樵趯?shí)際應(yīng)用中不僅僅是以數(shù)字為序列的,有一字母為序列的,有的還有對(duì)特定位置的字段進(jìn)行有序更名,所以我們這里還只能是一個(gè)實(shí)驗(yàn)性質(zhì)的功能。 16 需求分析說(shuō)明說(shuō) 3.2.6 搜索模塊功能 (1)文件的全盤掃描,技術(shù)允許的話可以將掃描結(jié)果存儲(chǔ)在數(shù)據(jù)庫(kù)中,甚至可以監(jiān)視文件的改動(dòng)情況。但是可以設(shè)置掃描條件限

35、制,google的picssa有全盤掃描的功能,但是沒(méi)有條件限制,使得一些根本沒(méi)有欣賞價(jià)值的ICON,BMP小圖片被搜索出來(lái),占用了有限的資源,又不能為用戶所使用。我們可以設(shè)置以文件的名字,大小,寬高比,日期,搜索范圍等條件進(jìn)行組合搜索,使得范圍縮小化,提高搜索準(zhǔn)確率。 (2)我們發(fā)現(xiàn)通常的搜索是一次性的,即只能在條件一的情況下得出結(jié)果,但是如果要在得出的搜索結(jié)果內(nèi)部再進(jìn)行二次搜索時(shí)就會(huì)產(chǎn)生困難。 以上兩個(gè)目標(biāo)由于設(shè)計(jì)過(guò)多的文件系統(tǒng)相關(guān)操作,我們由于自己的能力沒(méi)有能夠?qū)崿F(xiàn)。 3.2.7 輔助功能模塊 包括一個(gè)時(shí)鐘,一個(gè)顏色指示器,一個(gè)RGB值動(dòng)態(tài)解析器。一個(gè)路徑顯示器。這幾個(gè)功能都會(huì)放

36、在工具欄上和狀態(tài)欄上,而這兩個(gè)工作條都可以被選擇顯示或者隱藏。還有一個(gè)幫助文檔,當(dāng)我們點(diǎn)擊help中的helpdocument時(shí)會(huì)啟動(dòng)網(wǎng)頁(yè)瀏覽器打開(kāi)HTML形式的幫助文檔。內(nèi)容包括文檔信息,使用幫助,功能信息。以及版權(quán)聲明等。 17 需求分析說(shuō)明說(shuō)3.3界面的設(shè)計(jì)(軟件實(shí)現(xiàn)界面的截圖)3.3.1啟動(dòng)畫(huà)面 version1.0 圖3-8啟動(dòng)畫(huà)面3.3.2軟件運(yùn)行以后的各部分截圖顯示 圖3-9軟件運(yùn)行以后的各部分截圖顯示 18 需求分析說(shuō)明說(shuō)3.3.3目錄樹(shù)伸展的演示 圖3-10目錄樹(shù)伸展的演示3.3.4縮略圖的演示

37、 圖3-11縮略圖的演示 19 需求分析說(shuō)明說(shuō)3.3.5詳細(xì)信息查看方式的演示 圖3-12詳細(xì)信息查看方式的演示 3.3.6提示的演示 FiltParh:E:i測(cè)試用圖-Jpg HightiO^q-pi> -.Vidthpix XDPI72pix'inch ¥CPI:72pix'inch Nura:7/9 FileNane;L_.jpg May.g last.madiHEd:£007^JulV0803:07 圖3-13提示的

38、演示 20 需求分析說(shuō)明說(shuō)3.3.7輔助功能的演示,顏色指示器,路徑的顯示0??=EHElIHWhOueihi叱ml也uljT缸Flijiqti詢(kilinlulTellrfthl#協(xié)|託血1曲出 圖3-14工具欄 3.3.8 RGB值的顯示,時(shí)鐘的顯示 12C-5.aMR少口L7GO加 圖3-15狀態(tài)欄 3.3.9 圖片選擇及預(yù)覽 圖3-16圖片預(yù)覽 3.3.10 菜單的選擇,及各個(gè)模塊的對(duì)應(yīng)關(guān)系 Help 屮Toolb-ar #SratusE^r -"GirectoryEar *Prevci^wBar -二本地

39、磁盤i:E:] 圖3-17對(duì)應(yīng)關(guān)系 21 需求分析說(shuō)明說(shuō) 對(duì)應(yīng)于這些菜單選項(xiàng),我們可以選擇讓某個(gè)欄目消失或者顯示 3.3.11 通過(guò)雙擊目標(biāo),調(diào)用圖片查看器 右1xDti-A-ril a bi □'IlO ■J.5 ._0■itlif£0 tJMMCiQ螟1遷用圖ns干托 溜電何 J応電站益. J本LHEi當(dāng).3*' 豐:地晞老(FI DC替 25(LMon-WinctawiFEjtrCif?&秦葦龍 SChJpa 圖3-18圖片查看器的調(diào)用 3.4 軟件功能涉及的技術(shù) 3.4.1 MFC界面的設(shè)計(jì) 選擇使用單文檔視圖,作為運(yùn)行在windows

40、操作系統(tǒng)上的軟件開(kāi)發(fā)帶有界面的程序必須要使用Microsoft提供的意境封裝好了的MFC(微軟基礎(chǔ)類庫(kù)),微軟將常用到的框架,通用空間,操作集中使用C++類封裝的特性,將這些形成借口,供程序員直接調(diào)用,提高了開(kāi)發(fā)效率,當(dāng)然能夠提供界面開(kāi)發(fā)的還包括使用basic語(yǔ)言的VB,使用pascal語(yǔ)言的Delphi,還有帶有跨平臺(tái)性的java語(yǔ)言。但總體來(lái)說(shuō)使用MS提供的開(kāi)發(fā)工具,一是當(dāng)前流行,再就是于系統(tǒng)的集成度,兼容度高。 3.4.2 動(dòng)態(tài)鏈接庫(kù)的使用 對(duì)動(dòng)態(tài)庫(kù)使用的一些介紹,本次軟件的開(kāi)發(fā)需要調(diào)用一些外部的動(dòng)態(tài)鏈接庫(kù), MS自身提供了一些圖片格式的加載,但是對(duì)常見(jiàn)流行的格式支持得不夠完全,而

41、 22 需求分析說(shuō)明說(shuō) 且調(diào)用的時(shí)候略嫌麻煩,而使用開(kāi)放源碼的圖形庫(kù)CXIMAGE就會(huì)很輕松的讓軟件實(shí)現(xiàn)多格式支持,加載,顯示,這幾個(gè)功能對(duì)CXIMAGE本身強(qiáng)大的功能來(lái)說(shuō)顯得大材小用,但是這可以給我們帶來(lái)方便的調(diào)用,以及以后軟件功能豐富版本升級(jí)帶來(lái)好處。 3.4.3 VC的環(huán)境設(shè)置使用這個(gè)軟件以前需要對(duì)環(huán)境進(jìn)行配置,使用這個(gè)開(kāi)發(fā)工具以前,我們由于引入了動(dòng)態(tài)鏈接庫(kù),而且還調(diào)用了ACTIVEPROJECT控件的部分功能,而且在軟件的調(diào)試過(guò)程中以及最后發(fā)布版本時(shí),使用了debug,release,兩種編譯方式,所以工具軟件的環(huán)境設(shè)置也是一個(gè)比較復(fù)雜的問(wèn)題。流行的圖形庫(kù),使用圖形庫(kù)的引入

42、3.4.4 Active控件的添加,及使用 啟動(dòng)畫(huà)面使用的技術(shù),啟動(dòng)畫(huà)面添加時(shí)需要ACTIVEPROJECT的支持,所以我們有必要對(duì)這個(gè)技術(shù)有所了解。 3.4.5 外殼類名字空間 (a) 在WINDOWS中,使用了外殼名字空間(ShellNameSpace),它顯示整個(gè)WINDOWS的文件目錄樹(shù).外殼名字空間是Windows下的標(biāo)準(zhǔn)文件系統(tǒng),它大大擴(kuò)展了Dos文件系統(tǒng),形成了以“桌面”(Desktop)為根的單一的文件系統(tǒng)樹(shù),原有的,盤、,盤等目錄樹(shù)變成了“我的電腦”這一外殼名字空間子樹(shù)的下一級(jí)子樹(shù),而像 “控制面板”、“回收站”、“網(wǎng)上鄰居”等應(yīng)用程序及“打印機(jī)”等設(shè)備也被虛擬成了外

43、殼名字空間中的節(jié)點(diǎn)。另外,與,,,中物理存儲(chǔ)只能和文件系統(tǒng)項(xiàng)一一對(duì)應(yīng)這一點(diǎn)不同的是,一個(gè)實(shí)際目錄在外殼名字空間中可以表現(xiàn)為不同的項(xiàng)。例如 “我的文檔”與“C:\MyDocuments”其實(shí)都指向“C:\MyDocuments”目錄,但它們?cè)谕鈿っ挚臻g中是不同的項(xiàng)。 (b) 外殼名字空間下的路徑:PIDL PIDL是一個(gè)元素類型為ITEMIDLIST結(jié)構(gòu)的數(shù)組,數(shù)組中元素的個(gè)數(shù)是未知的,但緊接著數(shù)組末尾的必是一個(gè)雙字節(jié)的零。每個(gè)數(shù)組元素代表了外殼名字空間樹(shù)中的一層(即一個(gè)文件夾或文件),數(shù)組中的前一元素代表的是后一元素的父文件夾。 23 需求分析說(shuō)明說(shuō) 由此可見(jiàn),PIDL實(shí)際上就是

44、指向一塊由若干個(gè)順序排列的ITEMIDLIST結(jié)構(gòu)組成、并在最后有一個(gè)雙字節(jié)零的空間的指針。所以PIDL的類型就被Windows定義為ITEMIDLIST結(jié)構(gòu)的指針。PIDL亦有“絕對(duì)路徑”與“相對(duì)路徑”的概念。表示“相對(duì)路徑”的PIDL只有一個(gè)ITEMIDLIST結(jié)構(gòu)的元素,用于標(biāo)識(shí)相對(duì)于父文件夾的“路徑”;表示“絕對(duì)路徑”的PIDL(簡(jiǎn)稱為“絕對(duì)PIDL”)有若干個(gè) ITEMIDLIST結(jié)構(gòu)的元素,第一個(gè)元素表示外殼名字空間根文件夾(“桌面”)下的某一子文件夾A,第二個(gè)元素則表示文件夾A下的某一子文件夾B,其余依此類推。這樣絕對(duì)PIDL就通過(guò)保存一條從“桌面”下的直接子文件夾或文件的絕對(duì)

45、PIDL與相對(duì)PIDL是相同的,而其他的文件夾或文件的相對(duì)PIDL就只是其絕對(duì)PIDL的最后一部分了。由于所有的PIDL都是從桌面下的某一個(gè)子文件夾開(kāi) 始的,所以對(duì)于桌面本身來(lái)說(shuō),它的PIDL數(shù)組顯然一個(gè)元素都沒(méi)有。這樣就只剩下PIDL數(shù)組最后的那個(gè)雙字節(jié)的零了。所以,“桌面”的PIDL就是一個(gè)16位的零3.4.6圖形接口Ipicture 圖像對(duì)象的主要接口是IPicture和IPictureDisp。IPictureDisp從IDispatch繼承,提供了通過(guò)自動(dòng)化訪問(wèn)圖片屬性的能力。圖片對(duì)象可通過(guò)OleCreatePictureIndirect 創(chuàng)建。關(guān)于IPicture支持的其他接

46、口和方法可以看MSDN,—般創(chuàng)建圖片對(duì)象可以用OleLoadPicture函數(shù),它簡(jiǎn)化了基于流內(nèi)容創(chuàng)建圖片對(duì)象。 3.4.7 CXIMAGE圖形庫(kù)的引入 CxImage對(duì)象是一個(gè)擴(kuò)展了的位圖。作者只是在位圖結(jié)構(gòu)上添加了一些起存儲(chǔ)信息作用的成員變量。一個(gè)CxImage對(duì)象(同時(shí))也是一組層。每個(gè)層只有在需要時(shí)才會(huì)分配相應(yīng)的緩沖區(qū)。CxImage::pDib代表著背景圖像,CxImage::pAlpha代表著透明層,CxImage::pSelection代表著被選中的層,被用來(lái)創(chuàng)建圖像處理時(shí)讓用戶感興趣的區(qū)域。在這三個(gè)特殊層面的基礎(chǔ)上,你可以增加一些額外的層,這些層可以存儲(chǔ)在CxImage::

47、pLayers中。一般說(shuō)來(lái),層是一個(gè)完整的CxImage對(duì)象。因此,你可以構(gòu)造很復(fù)雜的嵌套層。 24 需求分析說(shuō)明說(shuō) 3.4.8 線程的創(chuàng)建,保護(hù),與終止 創(chuàng)建線程的原因,線程的使用,圖片由于其巨大的體積,在顯示時(shí)會(huì)消耗大量的內(nèi)存資源,而且做作為程序功能的一部分,我們不可能讓這個(gè)程序停滯在那里,去等待圖片加載完成,而且由于誤操作等一些常見(jiàn)的原因,我們需要對(duì)左邊目錄樹(shù)的操作要求有比較快的反應(yīng)速度,這些都需要開(kāi)辟新的線程去完成,并且要控制好線程的開(kāi)啟,結(jié)束,以及保護(hù)。 3.4.9 tooltip的實(shí)現(xiàn),并隨著查看方式的不同改變目標(biāo)區(qū)域 tooltip類主要能夠?qū)崿F(xiàn)鼠標(biāo)懸停的時(shí)候可以顯示

48、相應(yīng)的屬性信息,這里主要應(yīng)用在VIEW視圖時(shí)顯示圖片的詳細(xì)信息. 3.4.10文件信息打包成結(jié)構(gòu)Filestuct 我們?cè)谲浖腣IEW許多地方都會(huì)用到文件信息結(jié)構(gòu),我們?cè)诿看芜x擇文件夾時(shí)都會(huì)對(duì)所在目錄的所有文件把文件名存進(jìn)一個(gè)VECTOR容器中,在這個(gè)過(guò)程中我們依次將文件名,大小,日期,文件類型,寬高,分辨率存入Filestuct中.3.4.11report視圖下排序的實(shí)現(xiàn) 當(dāng)我們選擇REPORT方式查看listview的方式,將會(huì)以一個(gè)列表的方式將各屬性信息存入列表中,而當(dāng)我們單擊某一列時(shí),可以對(duì)相關(guān)屬性的列表進(jìn)行排序. 4軟件的實(shí)現(xiàn)以及主要函數(shù)的介紹軟件主要功能分為兩部分,對(duì)應(yīng)于

49、界面上的左右兩部分,我們兩個(gè)人一個(gè)負(fù)責(zé)目錄樹(shù)(Directory)和預(yù)覽區(qū)(Preview)。一個(gè)負(fù)責(zé)視圖區(qū)(View)。 軟件的其他功能基本上為輔助功能實(shí)現(xiàn),將在最后介紹。 25 需求分析說(shuō)明說(shuō) 4.1 目錄樹(shù)功能實(shí)現(xiàn) 4.1.1 目錄樹(shù)所在區(qū)域的創(chuàng)建 目錄樹(shù)要附加在一塊區(qū)域之上,我們使用TOOLBAR類來(lái)實(shí)現(xiàn)。 CDirectoryTreeBar即為最終實(shí)現(xiàn)的類。它的繼承示意圖為: CWnd CControlBar #definebaseCSizingControlBarCFCsizingControlBarGCDirectoryTreeBardefinein“scba

50、rg.cpp” definein“sizecbar.cpp”baseCSizingControlBar CSizingControlBarG baseCSizingControlBarCF CSizingControlBarCF CDirectoryTreeBar 圖4-1CDirectoryTreeBar類的繼承關(guān)系 區(qū)域的創(chuàng)建: 創(chuàng)建區(qū)域類CDirectoryTreeBar的對(duì)象m_wndDirTreeBar,在MainFrm。h中定義 CDirectoryTreeBarm_wndDirTreeBar; 在CdirectoryTreeBar類由OnCreate函數(shù)實(shí)現(xiàn),

51、用來(lái)創(chuàng)建目錄樹(shù)的背景區(qū)域,在MainFrm。cpp中定義: 創(chuàng)建函數(shù):m_wndDirTreeBar°Create(…) 類型設(shè)置函數(shù):m_wndDirTreeBar°SetBarStyle(…) 區(qū)域??款愋驮O(shè)置:m_wndDirTreeBar°EnableDocking(…), 客戶區(qū)域接受停靠的邊界設(shè)置:EnableDocking(…); 需求分析說(shuō)明說(shuō) 26 4.1.2 目錄樹(shù)的創(chuàng)建 目錄樹(shù)本身由CdirTreeCtrl實(shí)現(xiàn),它的繼承示意圖為: CObject CCmdTarget CWnd CTreeCtrl CDirTreeCtrl 圖4-2CDir

52、TreeCtrl類的繼承關(guān)系 目錄樹(shù)構(gòu)造函數(shù):CDirTreeCtrl::CDirTreeCtrl(…) 目錄樹(shù)初始化函數(shù):CDirTreeCtrl::Initialize()建立根目錄即桌面:RefreshShellRoot(…); 判斷創(chuàng)建的目錄是否是根目錄,如果是根目錄就將多余的結(jié)點(diǎn)刪除: RefreshSubltems(…)由RefreshShellRoot(…)函數(shù)調(diào)用。 如果建立的目錄是根目錄就調(diào)用PopulateRoot(…)函數(shù),遍歷當(dāng)前文件夾。如果當(dāng)前文件夾中有子文件夾,就調(diào)用FillItem(…)函數(shù)去填充當(dāng)前文件目錄當(dāng)我們?nèi)c(diǎn)擊目錄樹(shù)前面的小圖標(biāo)”+”號(hào)或者書(shū)記

53、這個(gè)文件夾時(shí),系統(tǒng)會(huì)進(jìn)入次文件夾并開(kāi)始遍歷次文件夾。由Onltemexpanding()函數(shù)實(shí)現(xiàn)。 當(dāng)一個(gè)文件夾展開(kāi)后,去點(diǎn)擊目錄樹(shù)上文件夾前面的小圖標(biāo)”-“號(hào)時(shí),系統(tǒng)進(jìn)入此文件夾并開(kāi)始遍歷刪除此文件夾里的子文件夾。由OnEndlabeledit(…)函數(shù)實(shí)現(xiàn)。 4.2 圖片預(yù)覽區(qū)的創(chuàng)建 4.2.1圖片預(yù)覽區(qū)的創(chuàng)建 圖片預(yù)覽區(qū)由CpreviewBar類實(shí)現(xiàn),它的對(duì)象在MainFrm。h中定義 CPreviewBarm_wndPreviewBar; 27 需求分析說(shuō)明說(shuō) CpreviewBar的繼承關(guān)系如圖: CWnd CControlBar #definebaseCSiz

54、ingControlBarCFCsizingControlBarGCDirectoryTreeBardefinein“scbarg.cpp” definein“sizecbar.cpp”baseCSizingControlBar CSizingControlBarG baseCSizingControlBarCF CSizingControlBarCF CPreviewBar 圖4-3CPreviewBar類的繼承關(guān)系 圖像預(yù)覽工具欄的創(chuàng)建:m_wndPreviewBar°Create(…)預(yù)覽欄欄風(fēng)格設(shè)置:m_wndPreviewBar°SetBarStyle(…)預(yù)覽工具欄停

55、靠位置:DockControlBar(…) 4.1.2 圖片畫(huà)布的創(chuàng)建 圖片畫(huà)布的創(chuàng)建在CPreviewBar::OnCreate(…)中調(diào)用 畫(huà)布對(duì)象m_wndCanvas的類型為CStatic,其繼承關(guān)系圖為: CObject CCmdTarget CWnd CStatic 圖4-4CStatic的繼承關(guān)系圖m_wndCanvas.Create(…)在圖片預(yù)覽區(qū)域上,我們將畫(huà)布區(qū)域用于顯示圖片,在這里設(shè)置圖片顯示的大小 28 需求分析說(shuō)明說(shuō) 和風(fēng)格。 CPreviewBar::OnSize(…) 由于原圖片的寬高比例和顯示區(qū)域的寬高比例有所差別,需要進(jìn)行相關(guān)的調(diào)整

56、。所以原圖寬高比設(shè)置為: fImgRatio=(float)pDoc->m_pSelectedImage->GetHeight()/pDoc->m_pSelectedIma ge->GetWidth(); 顯示區(qū)域的寬高比例為: fRatio=(float)nHeight/nWidth;在圖片顯示區(qū)域的寬,高等信息設(shè)置完畢后開(kāi)始繪畫(huà)這篇區(qū)域:CPreviewBar::OnDrawItem(...)軟件啟動(dòng)以后可以設(shè)置顯示框架的大小: CPreviewBar::OnLButtonUp(…) 4.3 視圖區(qū)域功能實(shí)現(xiàn) 4.3.1視圖區(qū)域主要由CThumbViewerView類實(shí)現(xiàn)

57、CThumbViewerView的繼承關(guān)系圖為: CWnd CView CCtrl ViewCListView CThumbViewer View 圖4-5CThumbViewerView的繼承關(guān)系 可以分為兩種方式查看: 默認(rèn)的縮略圖查看方式: CThumbViewerView::Onthumb(…) 可以通過(guò)工具欄上的選擇,實(shí)現(xiàn)詳細(xì)信息查看方式: 29 需求分析說(shuō)明說(shuō) CThumbViewerView::OnReport(?) 圖片加載時(shí)需要調(diào)用:CThumbViewerView::LoadThumbImages(?)而上面的加載函數(shù)則要調(diào)用回調(diào)加載函數(shù):

58、unsigned__stdcallCThumbViewerView::LoadThumbNail(?)圖片文件信息以及圖像內(nèi)容信息結(jié)構(gòu)的在ThumbViewerView。h中定義structStruet { CStringfilename; DWORDdwlength; intfiletype; CStringm_mtime; inthight; intwidth; intxdpi; intydpi; }; 縮略圖列表主要由類型為CImageList實(shí)現(xiàn),它的對(duì)象在ThumbViewerView.h中定義CImageListm_ImageListThumb;CImageL

59、ist的繼承關(guān)系如圖: CObject CImageList 圖4-5CImageList的繼承關(guān)系 CImageList的創(chuàng)建函數(shù)為:m_ImageListThumb.Create(?)而ListCtrl為了 能夠加載各對(duì)象的縮略圖片,需要使用下面的函數(shù)進(jìn)行關(guān)聯(lián): ListCtrl.SetImageList(&m_ImageListThumb,LVSIL_NORMAL); ListCtrl的背景顏色設(shè)置為:ListCtrl.SetBkColor(RGB(45,100,88)); 30 需求分析說(shuō)明說(shuō) ListCtrl的類型為CListCtrl,其繼承關(guān)系圖: CObje

60、ct CCmdTarget CWnd CListCtrl 圖4-6繼承關(guān)系圖 線程終極函數(shù)為:CThumbViewerView::TerminateThread() 4.4 與視圖功能相關(guān)的功能實(shí)現(xiàn) 4.4.1縮略圖的信息提示功能 信息提示功能主要是由CToolTipCtrl類實(shí)現(xiàn),它的對(duì)象ToolTipCtrl在 ThumbViewerView.h中定義:CToolTipCtrlToolTipCtrl;CToolTipCtrl類的繼承關(guān)系圖: CObject CCmdTarget CWnd CToolTipCtrl 圖4-7CToolTipCtrl類的繼承關(guān)系

61、獲得安全句柄:ToolTipCtrl.GetSafeHwnd() 創(chuàng)建:ToolTipCtrl.Create(this,TTS_ALWAYSTIP) 激活ToolTipCtrl.Activate(TRUE); 向ToolTipCtrl發(fā)送消息:CThumbViewerView::PreTranslateMessage(…) ToolTipCtrl添加顯示內(nèi)容的函數(shù):CThumbViewerView::Getitemlnfor(…) 31 需求分析說(shuō)明說(shuō) 4.4.2 詳細(xì)信息查看方式的相關(guān)功能 列表屬性信息插入ListCtrl.InsertColumn(?) 列表個(gè)項(xiàng)目插入Li

62、stCtrl.SetitemText(?) 列表單個(gè)屬性的選擇:CThumbViewerView::OnColumnclick(?) 單個(gè)屬性的排序函數(shù):CALLBACKCThumbViewerView::CompareFunc(?) 內(nèi)部排序函數(shù):CThumbViewerView::OnSortitem(?) 4.5 顏色指示器的實(shí)現(xiàn) 鼠標(biāo)當(dāng)前指針的位置:GetCursorPos(?) 當(dāng)前位置顏色的獲取:COLORREFcol=GetPixel(?) 狀態(tài)欄RGB值的實(shí)現(xiàn):m_wndStatusBar.SetPaneText(?) 工具欄上顏色指示框的的實(shí)現(xiàn):pDC->Re

63、ctangle(?) 4.6 路徑指示器的實(shí)現(xiàn) 獲取當(dāng)前主框架的指針: CMainFrame*pFrame=(CMainFrame*)AfxGetMainWnd(); 獲得活動(dòng)文檔: CThumbViewerDoc*pDoc=(CThumbViewerDoc*)pFrame->GetActiveDocument(); 路徑的獲取:pDoc->m_strCurrentDirectory 4.7 目錄下文件信息的輸出 主要由CThumbViewerView::OnOut()函數(shù)實(shí)現(xiàn): 創(chuàng)建輸出文件的:CreateFile(?); 輸出文件的位置:"C:\\Documentsan

64、dSettings\\Administrator\\桌面\\infor.txt" 32 需求分析說(shuō)明說(shuō) 獲取listctrl的對(duì)象的數(shù)目: intnum=ListCtrl.GetItemCount(); 獲得文件的屬性結(jié)構(gòu): Struct*pStruct=(Struct*)ListCtrl.GetItemData(j); 4.8 文件的批量命名 主要由CThumbViewerView::OnBatch()函數(shù)實(shí)現(xiàn) 單個(gè)文件的重命名:CFile::Rename(path,newname);文件類型的獲取: intn=type.GetLength()-type.ReverseF

65、ind('.');type=type.Right(n); 4.9 調(diào)用圖片查看器 主要由CThumbViewerView::OnLButtonDblClk(?) 獲取文件的全路徑: CStringpath=pDoc->m_strCurrentDirectory+'\\'+pDoc->m_vFileName[nIndex]; 調(diào)用microsoftwindows自帶的圖片傳真查看器查看圖片: ShellExecute(m_hWnd,"open",path,NULL,NULL,SW_SHOWNA); 4.10 打開(kāi)軟件的幫助文檔 主要由CThumbViewerView::OnMEN

66、UITEMhelp()函數(shù)實(shí)現(xiàn) 選擇文檔,主要是HTML文件,選擇文檔的打開(kāi)方式:MicrosoftIE HWNDh=FindWindowEx(NULL,NULL,NULL,"MicrosoftInternetExplorer")文件的打開(kāi): 33 需求分析說(shuō)明說(shuō) ShellExecute(h,"open","./help/index.html",NULL,NULL,SW_SHOWNA); 4.11 幾個(gè)重要工具條的隱藏和顯示 4.11.1目錄樹(shù)的顯示與隱藏 CMainFrame::OnViewDirectoryBar() 隱藏::ShowWindow(m_wndDirTreeBar.m_hWnd,SW_HIDE);顯 示::ShowWindow(m_wndDirTreeBar.m_hWnd,SW_SHOW); 預(yù)覽欄的顯示與隱藏: CMainFrame::OnViewPreviewBar() 隱藏:::ShowWindow(m_wndPreviewBar.m_hWnd,SW_HIDE);顯 示:::ShowWindow(m_wndPreviewBar.m_

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!