《圖片管理系統(tǒng)》需求分析說(shuō)明書(shū)
《《圖片管理系統(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_
- 溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 眼內(nèi)異物的聲像圖表現(xiàn)課件
- 《望海潮》一等獎(jiǎng)?wù)n件
- 配送中心拆零分揀方法綜述
- 中篇_中國(guó)飲食文化與健康(精品)
- 工作分析與職務(wù)說(shuō)明書(shū)介紹
- 三、民主管理:共創(chuàng)幸福生活
- 秋天的懷念(精品)(精品)
- 前山湘之泉米粉加工廠
- 經(jīng)濟(jì)發(fā)展新常態(tài)下的宏觀調(diào)控與穩(wěn)增長(zhǎng)上課件
- 宿新市徐公店-ppt
- 3.彈力彈簧測(cè)力計(jì) (2)(精品)
- 某公司招聘與配置培訓(xùn)
- LED發(fā)光原理與顯示屏的制造
- 體系審核及管理評(píng)審
- 人力資源管理之人員配備教材