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

正文內(nèi)容

基于mfc的圖片瀏覽器的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文(編輯修改稿)

2024-12-18 15:26 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 在載入圖片時(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),則彈出快捷菜單,顯示常用的操作命令。 10 在查看圖片時(shí),標(biāo)題欄顯示當(dāng)前打開(kāi)的圖片的文件名;狀態(tài)欄從左到右依次顯示圖片的全路徑、當(dāng)前的顯示比例、圖片文件的大?。?KB)、圖像的大小、鼠標(biāo)當(dāng)前的坐標(biāo)。 性能需求 ( 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/2020/XP/2020。 總體設(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ì)。 模塊劃分 本設(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ū)ο蟮?InitInstance()函數(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)系如圖 1 所示。 11 文檔模板 G e tDo c T e m p late ( ) 文檔 G e tF irstV iew P o sitio n ( )/ G e tNe x tV iew ( ) 視圖 G e tDo c u m e n t () G e tA c ti v e V iew ( ) 主框窗口 G e tA c ti v e Do c u m e n t () G e tP a ren tF ram e ( ) 圖 1 文檔 / 視結(jié)構(gòu)對(duì)象交互關(guān)系 圖 1 文檔 /視圖結(jié)構(gòu)對(duì)象交互關(guān)系 以 MVC( ModelViewController) 應(yīng)用程序結(jié)構(gòu) 劃分的模塊如圖 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)可以彈出快捷菜單。 P i ct ure V i ew er Mo de l V i ew C on t rol l er 圖像解碼、編碼模塊 圖像顯示模塊 圖像變換模塊 PCX解碼 /編碼模塊 TGA解碼 /編碼模塊 BMP解碼 /編碼模塊 JPEG模塊 GIF模塊 OnDraw () 狀態(tài)欄信息顯示 圖像縮放模塊 圖像旋轉(zhuǎn)模塊 全屏瀏覽模塊 圖像顯示模塊 圖 2 軟件模塊劃分 12 軟件在非全屏狀態(tài)下的整體頁(yè)面如圖 3 所示。 圖 3 非全屏狀態(tài)整體頁(yè)面 軟件菜單及工具欄如圖 4 所示。 圖 4 軟件菜單及工具欄 軟件在 全屏狀態(tài)下的浮動(dòng)工具條及右鍵菜單如圖 5 所示。 圖 5 全屏狀態(tài)下的浮動(dòng)工具條及右鍵菜單 詳細(xì)設(shè)計(jì) 13 詳細(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ì)。 軟件核心數(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)中完成的,為了便于訪(fǎng)問(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。 14 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。 15 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, int nSx,int nSy,int nSw,int nSh,UINT uFlags=0)const。 BYTE * GetLine(int nLine) //取得掃描行中一行的數(shù)據(jù) { return m_pImage+m_nPitch * nLine。 } }。 //類(lèi) LanImage BMP 解碼 /編碼模塊 上面的內(nèi)容已經(jīng)對(duì) BMP 圖像的存儲(chǔ)格式進(jìn)行了分析。 BMP 圖像的解碼由 LanImage 類(lèi)中的 ReadBmp()函數(shù)實(shí)現(xiàn),其中 緩沖區(qū)的創(chuàng)建調(diào)用了 LanImage::Ceate()函數(shù)。對(duì)于 BMP圖像,去掉 BMP 文件頭、信息頭之后就是圖像的數(shù)據(jù)信息。可以直接將其讀出并放入緩沖區(qū)中。 ReadBmp()函數(shù)中讀取圖像數(shù)據(jù)信息的代碼如下: BYTE * pTemp=GetLine(m_nHeight1)。 for(int i=0。 i。 ++i) { memcpy
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1