freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于mfc的圖片瀏覽器的設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁(yè)

2025-06-24 15:48本頁(yè)面
  

【正文】 上面的局部顏色列表標(biāo)志值為1,則需要在這里(緊跟在圖像標(biāo)識(shí)符之后)定義一個(gè)局部顏色列表以供緊接著它的圖像使用。使用前應(yīng)先保存原來(lái)的顏色列表,使用結(jié)束之后恢復(fù)保存的全局顏色列表。如果一個(gè)GIF文件既沒(méi)有提供全局顏色列表,也沒(méi)有提供局部顏色列表,則可以自己創(chuàng)建一個(gè)顏色列表,或使用系統(tǒng)的顏色列表。局部顏色列表也按RGBRGB等的方式排列。(5)基于顏色列表的圖像數(shù)據(jù)(TableBased Image Data)圖像數(shù)據(jù)由兩部分組成,即LZW最小編碼長(zhǎng)度(LZW Minimum Code Size)和圖像數(shù)據(jù)(Image Data)。l LZW最小編碼長(zhǎng)度:表示GIF文件使用的LZW編碼的初始碼表大小的位數(shù)。l 圖像數(shù)據(jù):由一個(gè)或幾個(gè)數(shù)據(jù)塊(Data Subblocks)組成。GIF圖像數(shù)據(jù)在壓縮前有連續(xù)的和交織的(由圖像標(biāo)識(shí)符的交織標(biāo)志控制)兩種排列格式。連續(xù)方式按從左到右、從上到下的順序排列圖像的光柵數(shù)據(jù)。交織圖像按下面方法處理光柵數(shù)據(jù)。創(chuàng)建4個(gè)通道(Pass)保存數(shù)據(jù),每個(gè)通道提取不同行的數(shù)據(jù),方法如下:l 第1通道(Pass1)提取從第0行開(kāi)始每隔8行的數(shù)據(jù)。l 第2通道(Pass2)提取從第4行開(kāi)始每隔8行的數(shù)據(jù)。l 第3通道(Pass3)提取從第2行開(kāi)始每隔4行的數(shù)據(jù)。l 第4通道(Pass4)提取從第1行開(kāi)始每隔2行的數(shù)據(jù)。 GIF文件的交織圖像數(shù)據(jù)的提取3. GIF文件結(jié)尾GIF文件的結(jié)尾均為一個(gè)值為0x3B的字節(jié),叫做文件終結(jié)符(Tailer)。GIF圖像的文件結(jié)構(gòu)中,除了上面討論的幾部分以外,在89a版本中,還可以有圖形控制擴(kuò)展(Graphic Control Extension)、注釋擴(kuò)展(Comment Extension)、圖形文本擴(kuò)展(Plan Text Extension)、應(yīng)用程序擴(kuò)展(Application Extension)等。因與本設(shè)計(jì)關(guān)系不大,在此不再詳述。 第4章 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)在整個(gè)畢業(yè)設(shè)計(jì)期間,我通過(guò)需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)三個(gè)階段完成了整個(gè)設(shè)計(jì)過(guò)程。下面分別介紹這三個(gè)階段的實(shí)現(xiàn)過(guò)程。 需求分析1. 功能需求本設(shè)計(jì)將要實(shí)現(xiàn)的是一個(gè)單機(jī)圖片瀏覽軟件,從其目標(biāo)功能及特點(diǎn)分析,將本軟件功能劃分如下:可以打開(kāi)BMP、PCX、TGA、JPEG及GIF圖像。不論打開(kāi)的是上述圖像中的哪一種,用戶(hù)均能以其中的任意一種格式將其保存。在查看一幅圖像時(shí),可以逐漸放大、縮?。豢梢灾苯诱{(diào)整圖像顯示大小到適合屏幕或恢復(fù)為原始狀態(tài);可以直接將顯示大小調(diào)整為原圖像的50%、75%、150%、200%。在查看一幅圖像時(shí),可以對(duì)其進(jìn)行順時(shí)針90186。、逆時(shí)針90186。、180186。旋轉(zhuǎn)。在查看一幅圖像時(shí),可以直接調(diào)用Windows畫(huà)圖程序打開(kāi)并進(jìn)行編輯或以系統(tǒng)默認(rèn)關(guān)聯(lián)的程序打開(kāi)查看或編輯。軟件提供“上一張”、“下一張”的功能,即在打開(kāi)一幅圖像后,可以不再使用“打開(kāi)”命令而用鼠標(biāo)單擊“上一張”按鈕、“下一張”按鈕或按鍵盤(pán)上的Page Up鍵、Page Down鍵直接瀏覽當(dāng)前圖片所在文件夾中的其他圖片。可以進(jìn)行全屏幕瀏覽,并在全屏幕瀏覽時(shí)提供“幻燈片播放”的功能,自動(dòng)顯示當(dāng)前文件夾下的所有圖像。同時(shí),在全屏幕瀏覽時(shí),在屏幕右上角顯示一個(gè)浮動(dòng)工具條,提供“停止幻燈片播放”、“上一張”、“下一張”、“逐漸放大”、“逐漸縮小”、“適合屏幕大小”、“原始大小”及“退出全屏瀏覽”的功能。按F11鍵可以進(jìn)行全屏瀏覽、非全屏瀏覽的切換,同時(shí),在進(jìn)行全屏幕瀏覽時(shí)按ESC鍵也可以退出全屏狀態(tài)。在載入圖片時(shí),提供“從上往下”、“從下往上”、“從左往右”、“從右往左”、“左上進(jìn)入”、“左下進(jìn)入”、“右上進(jìn)入”、“右下進(jìn)入”、“馬賽克”、“百葉窗”等顯示效果,并且可以由用戶(hù)選擇是否使用及使用哪個(gè)效果,用戶(hù)也可以選擇讓系統(tǒng)隨機(jī)選擇效果。在查看圖片時(shí),用戶(hù)也可以讓軟件隨時(shí)顯示“水平百葉窗”、“垂直百葉窗”、“馬賽克”、“向上掃描”、“向下掃描”等效果。在查看圖片時(shí),可以選擇從當(dāng)前目錄中刪除該圖片,并將其放入系統(tǒng)回收站中。在窗口的用戶(hù)區(qū)右鍵單擊鼠標(biāo),則彈出快捷菜單,顯示常用的操作命令。在查看圖片時(shí),標(biāo)題欄顯示當(dāng)前打開(kāi)的圖片的文件名;狀態(tài)欄從左到右依次顯示圖片的全路徑、當(dāng)前的顯示比例、圖片文件的大?。↘B)、圖像的大小、鼠標(biāo)當(dāng)前的坐標(biāo)。2. 性能需求 (1)硬件平臺(tái)要求由于本軟件為單機(jī)軟件,不需進(jìn)行大量的數(shù)據(jù)讀寫(xiě)和數(shù)據(jù)交換,故對(duì)系統(tǒng)硬件配置的要求并不高,只要能夠平穩(wěn)運(yùn)行Windows操作系統(tǒng)的硬件平臺(tái),都能夠使用本軟件。提示:軟件提供的顯示特效,由于其需要相對(duì)較為大量的運(yùn)算,故對(duì)CPU性能要求較高,要想獲得理想的效果,建議CPU為PIII 800MHz以上。(2)軟件環(huán)境要求本軟件運(yùn)行平臺(tái)為Microsoft Windows 98/Me/NT/2000/XP/2003。 總體設(shè)計(jì)在對(duì)整個(gè)開(kāi)發(fā)系統(tǒng)進(jìn)行全面分析調(diào)查的基礎(chǔ)上,制定出應(yīng)用軟件的總體設(shè)計(jì)規(guī)劃,這對(duì)建立一個(gè)應(yīng)用系統(tǒng)來(lái)說(shuō)是必須的,也是全面展開(kāi)開(kāi)發(fā)工作的重要基礎(chǔ)。系統(tǒng)總體設(shè)計(jì)包括:模塊的劃分和軟件界面設(shè)計(jì)。1. 模塊劃分本設(shè)計(jì)的實(shí)現(xiàn)基于微軟的MFC應(yīng)用程序框架,故軟件也采用了文檔(Document)/視圖(View)結(jié)構(gòu),并使用單文檔界面(Single Document Interface,簡(jiǎn)稱(chēng)SDI)。程序框架在響應(yīng)它生成的標(biāo)準(zhǔn)用戶(hù)接口“打開(kāi)”命令時(shí)創(chuàng)建文檔/視圖結(jié)構(gòu),由于軟件只需提供瀏覽的供能,因此將生成的標(biāo)準(zhǔn)框架中的“新建”命令禁用,其創(chuàng)建次序如下。步驟1:程序啟動(dòng)時(shí),WinMain()函數(shù)調(diào)用應(yīng)用程序?qū)ο蟮腎nitInstance()函數(shù),并在其中創(chuàng)建文檔模板。步驟2:程序運(yùn)行過(guò)程中,選擇“文件”|“打開(kāi)”命令,框架將調(diào)用CWinApp::OnFileOpen()函數(shù),并使用已創(chuàng)建的文檔模板創(chuàng)建文檔。步驟3:文檔模板創(chuàng)建主框架窗口。步驟4:主框架窗口創(chuàng)建文檔對(duì)應(yīng)的視圖。程序中文檔/。 文檔/視圖結(jié)構(gòu)對(duì)象交互關(guān)系以MVC(ModelViewController)。2. 軟件界面設(shè)計(jì)根據(jù)軟件的需求分析及圖片瀏覽軟件的特點(diǎn),本設(shè)計(jì)中軟件采用單文檔界面(SDI),包括標(biāo)準(zhǔn)菜單、工具欄和狀態(tài)欄。工具欄上為常用菜單命令按鈕,如“打開(kāi)”、“保存”、“上一張”、“下一張”、“放大”、“縮小”、“旋轉(zhuǎn)”等。另外,在全屏顯示時(shí)提供浮動(dòng)工具欄,并且在用戶(hù)區(qū)右擊鼠標(biāo)可以彈出快捷菜單。 軟件模塊劃分。 非全屏狀態(tài)整體頁(yè)面。 軟件菜單及工具欄。 全屏狀態(tài)下的浮動(dòng)工具條及右鍵菜單 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)的工作包括處理過(guò)程和代碼設(shè)計(jì),即根據(jù)總體設(shè)計(jì)的每個(gè)功能模塊的要求,利用相應(yīng)的開(kāi)發(fā)工具設(shè)計(jì)出應(yīng)用系統(tǒng)的過(guò)程。由于篇幅的限制,在這里不給出全部的程序編碼,只給出軟件核心數(shù)據(jù)結(jié)構(gòu)LanImage類(lèi)、BMP解碼/編碼模塊、PCX解碼/編碼模塊、TGA解碼/編碼模塊、JPEG解碼/編碼模塊、GIF解碼/編碼模塊、圖像顯示模塊、全屏瀏覽模塊、圖像縮放模塊以及圖像旋轉(zhuǎn)模塊的設(shè)計(jì)。1. 軟件核心數(shù)據(jù)結(jié)構(gòu)LanImage類(lèi)由上面對(duì)圖像格式的分析可知,不同的圖像格式,其解碼和編碼方式有相當(dāng)大的區(qū)別,故將不同圖像的解碼、編碼劃分為單獨(dú)的模塊;然而,不論原圖像是何種格式,在解碼之后都會(huì)暫時(shí)以RGB的顏色數(shù)據(jù)存儲(chǔ)在內(nèi)存中的一塊緩沖區(qū)中。圖像的顯示模塊及變換模塊也就是針對(duì)此緩沖區(qū)的數(shù)據(jù)進(jìn)行操作。因此,設(shè)計(jì)一個(gè)LanImage類(lèi),其中包含一個(gè)字節(jié)型指針,指向圖像解碼后的數(shù)據(jù);該類(lèi)中還包含圖像顯示和變換所必需的屬性以及對(duì)圖像進(jìn)行操作的方法。由于圖像的顯示是在程序的視圖(View)中完成的,為了便于訪問(wèn)LanImage中的方法和屬性,將LanImage類(lèi)作為View類(lèi)(本程序中為CPictViewView)的公有成員。LanImage類(lèi)的詳細(xì)設(shè)計(jì)代碼如下:class LanImage{ public: BYTE * m_pImage。 //指向圖像解碼后數(shù)據(jù)緩沖區(qū)的指針 CJpeg* m_pJpeg。 //CJpeg類(lèi)對(duì)象指針 CGif* m_pGif。 //CGif類(lèi)對(duì)象指針 int m_nWidth。 //圖像實(shí)際寬度 int m_nHeight。 //圖像實(shí)際高度 int m_nDrawWidth。 //圖像顯示寬度 int m_nDrawHeight。 //圖像顯示高度 int m_nBitCount。 //圖像每像素占用的位數(shù) int m_nPitch。 //解碼后數(shù)據(jù)一個(gè)掃描行所占字節(jié)數(shù) int m_nImage。 //圖像數(shù)據(jù)的字節(jié)數(shù) int m_nPalette。 //調(diào)色板中顏色個(gè)數(shù) long nFileSize。 //圖像文件大小 // //當(dāng)被旋轉(zhuǎn)時(shí)保存原來(lái)的圖像可能被改變的信息 BYTE * m_pOriginImage。 Int m_nOriginWidth。 Int m_nOriginHeight。 Int m_nOriginPitch。 Int m_nOriginImage。 BOOL m_bBufferIsOriginal。 // BOOL m_bReadWithLibSupport。 //是否使用JPEG及GIF庫(kù)中的方法 RGBQUAD *m_pPal。 //指向調(diào)色板區(qū)域的指針 LanFormat m_eFmt。 //標(biāo)志圖像數(shù)據(jù)的存儲(chǔ)方式 ifdef UC_USE_DC //是否使用DC,如果使用則圖像解碼后 HBITMAP m_hBitmap。 //的緩沖區(qū)使用位圖格式 endif public: LanImage() //構(gòu)造函數(shù) { memset(this,0,sizeof(LanImage))。 m_bReadWithLibSupport=FALSE。 m_pJpeg=NULL。 m_pGif=NULL。 m_pPal=NULL。 } ~LanImage() //析構(gòu)函數(shù) { ifdef UC_USE_DC if(m_hBitmap) DeleteObject(m_hBitmap)。 //m_hBitmap中包含了m_pImage最初指向的區(qū)域 else if(m_bReadWithLibSupport) //如果使用了Lib Sources,這時(shí)m_pImage指 //向的是原來(lái)CJpeg類(lèi)的一部分空間,m_pImage=NULL。 //而該類(lèi)已摧毀,故那部分空間已由其收回。 delete [] m_pImage。 m_pImage=NULL。 endif delete m_pJpeg。 m_pJpeg=NULL。 delete m_pGif。 m_pGif=NULL。 if(m_pPal) { delete [] m_pPal。 m_pPal=NULL。 } } BOOL LoadImage(LPCTSTR pszFileName,int ndegree,BOOL isconvert)。 //載入圖像函數(shù) BOOL Create(int nWidth,int nHeight,int nBitCount,int ndegree, LanFormat eFmt=LanF_Unkown)。 //創(chuàng)建圖像解碼后的緩沖區(qū) BOOL ReadBmp(LPBYTE pBuffer,UINT uLength,int ndegree,BOOL isconvert)。 BOOL ReadTga(LPBYTE pBuffer,UINT uLength,int ndegree)。 BOOL ReadPcx(LPBYTE pBuffer,UINT uLength,int ndegree)。 BOOL SaveBmp(LPCTSTR pszFileName)const。 BOOL SaveTga(LPCTSTR pszFileName)const。 BOOL SavePcx(LPCTSTR lpstrFileName, CDib* pDib)。 //圖像顯示函數(shù) BOOL Draw(HDC hdc,int nDx,int nDy,int nDw,int nDh, i
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1