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

正文內(nèi)容

基于mfc的圖片瀏覽器的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文-預(yù)覽頁

2024-12-14 15:26 上一頁面

下一頁面
 

【正文】 ........................ 28 IV 使用 JPEG 和 GIF 讀寫庫時緩沖區(qū)格式的轉(zhuǎn)換 ............................. 29 實(shí)現(xiàn)旋轉(zhuǎn)時對內(nèi)存的位操作 ............................................ 31 直接對內(nèi)存中圖像數(shù)據(jù)進(jìn)行操作實(shí)現(xiàn)的特效 .............................. 33 右鍵菜單的實(shí)現(xiàn) ...................................................... 34 瀏覽功能的實(shí)現(xiàn) ...................................................... 35 5 軟件測試與改進(jìn)思想 .................................................... 37 軟件測試 ............................................................ 37 改進(jìn)思想 ............................................................ 37 6 結(jié) 束 語 ............................................................... 38 參 考 文 獻(xiàn) ........................................................... 39 Abstract ................................................................. 40 致 謝 ............................................... 錯誤 !未定義書簽。 數(shù)字圖像及其處理技術(shù)之所以發(fā)展的如此迅速并獲得廣泛的應(yīng)用,與其自身的優(yōu)點(diǎn)是息息相關(guān)的?,F(xiàn)代掃描 儀可以把每個像素的灰度等級量化為 16位甚至更高,這意味著圖像的數(shù)字化精度可以達(dá)到滿足任一應(yīng)用需求。 3) 適用面寬 圖像可以來自 于 多種信息源,它們可以是可見光圖像,也可以是不可見的波譜圖像(例如 X 射線圖像、射線圖像、超聲波圖像或紅外圖 像等)。 4) 靈活性高 圖像處理大體上可分為圖像的像質(zhì)改善、圖像分析和圖像重建三大部分,每一部分均包含豐富的內(nèi)容??蓪⑺殖芍T多步驟,必須一個接一個地執(zhí)行這些步驟,直到提取出有用的數(shù)據(jù)。完整一些的回答還要考慮到市場份額、所有權(quán)以及在圖像工業(yè)中缺乏的必要協(xié)調(diào)。計(jì)算機(jī)圖形學(xué)是計(jì)算機(jī)科學(xué)的一個特殊領(lǐng)域,它指的是通過計(jì)算機(jī)對可視數(shù)據(jù)進(jìn)行再現(xiàn),這包括為顯示或打印生成計(jì)算機(jī)圖像,以及為輸出 到監(jiān)視器、打印機(jī)、照相機(jī)或其他能提供圖像的設(shè)備上生成和處理的任何圖像(真實(shí)的或人造的)。這些關(guān)鍵點(diǎn)足以對形體進(jìn)行定義,而將它變成圖像的過程稱之為渲染。文件頭必須包含的信息為:( 1)行數(shù)(高);( 2)列數(shù)(寬);( 3)每像素位數(shù);( 4)文件類型。 開發(fā)平臺的選擇 在 Windows 環(huán)境下,目前比較流行的可視化開發(fā)工具主要有: Visual C++、 Visual 3 Basic、 C++ Builder、 Delphi、 Power Builder 及 JBuilder 等。 C++代碼被編譯成匯編語言,可以直接在處理器上運(yùn)行,效率很高。 C++直接控制內(nèi)存的分配和釋放,這雖繁瑣,且加大了編程的負(fù)擔(dān),但卻能有效地控制內(nèi)存的使用。所以,從內(nèi)存的使用效率來看,采用 C++進(jìn)行圖像處理編程更合適。而在以 C++為核心語言的可視化編程工具中, Microsoft Visual C++ 以其自身許多優(yōu)異的特性而獲得了最為廣泛的應(yīng)用。通過使用 AppWizard,程序員的編程工作便簡化為用資源編輯器直觀的設(shè)計(jì)界面,完善對話框類代碼,在空的處理函數(shù)4 模板處填寫響應(yīng)用戶操作的代碼,這是一種比較完善的可視化編程方法。 MFC( Microsoft Foundation Classes)應(yīng)用程序框架 應(yīng)用程序框架的一種定義是:提供一般應(yīng)用程序需 要的全部面向?qū)ο筌浖M件的集成集合。一般的類庫只是一種孤立的類的集合,用來嵌入在任何程序中,但是,應(yīng)用程序框架卻定義了程序的結(jié)構(gòu)。 2) 使用應(yīng)用程序框架的應(yīng)用程序不僅小,而且運(yùn)行速度快,具有很大的靈活性。 5) 強(qiáng)大的功能。文檔僅處理數(shù)據(jù)的實(shí)際讀、寫操作,視圖則是顯示和 處理數(shù)5 據(jù)的窗口,視圖可以操作文檔中的數(shù)據(jù)。 2) 應(yīng)用程序具有圖形用戶界面。 6) 通過 OLE 2 技術(shù)實(shí)現(xiàn)多個應(yīng)用程序的對象定位。 Win23 SDK和 MFC 是實(shí)現(xiàn) Win32 編程的主要工具。所以使用 Visual C++可以實(shí)現(xiàn) Win32 的可視化程序設(shè)計(jì)。 1) 消息 Windows 中的消息是操作系統(tǒng)與應(yīng)用程序之間、應(yīng)用程序與應(yīng)用程序之間、應(yīng)用程序各對象之間相互控制與傳遞信息的方式。這類消息包括除 WM_COMMAND 消息之外的名稱以 WM_開始的其他消息。 2) 消息映射過程 在使用 AppWizard 創(chuàng)建應(yīng)用程序時, MFC 應(yīng) 用程序框架設(shè)置了相應(yīng)的消息處理函數(shù)來響應(yīng)消息,以完成相應(yīng)的操作。 ClassWizard 在創(chuàng)建新類時將為其創(chuàng)建一個消息映射,并為每個類能響應(yīng)的消息和命令增加對應(yīng)的處理函數(shù)。常用的條目宏類型如表 1 所示。在有些情況下,必須在派生類的消息處理函數(shù)中調(diào)用其父類的消息處理函數(shù),使 Windows和基類能對消息進(jìn)行處理。下面分別介紹 這三個階段的實(shí)現(xiàn)過程。 在查看一幅圖像時,可以對其進(jìn)行順時針 90186。 在查看一幅圖像時,可以直接調(diào)用 Windows 畫圖程序打開并進(jìn)行編輯或以系統(tǒng)默認(rèn)關(guān)聯(lián)的程序打開查看或編輯。 按 F11 鍵可以進(jìn)行全屏瀏覽、非全屏瀏覽的切換,同時,在進(jìn)行全屏幕瀏覽時按 ESC鍵也可以退出全屏狀態(tài)。 在窗口的用戶區(qū)右鍵單擊鼠標(biāo),則彈出快捷菜單,顯示常用的操作命令。 ( 2)軟件環(huán)境要求 本軟件運(yùn)行平臺為 Microsoft Windows 98/Me/NT/2020/XP/2020。程序框架在響應(yīng)它生成的標(biāo)準(zhǔn)用戶接口“打開”命令時創(chuàng)建文檔 /視圖結(jié)構(gòu),由于軟件只需提供瀏覽的供能,因此將生成的標(biāo)準(zhǔn)框架中的“新建”命令禁用,其創(chuàng)建次序如下。 步驟 4: 主框架窗口創(chuàng)建文檔對應(yīng)的視圖。工具欄上為常用菜單命令按鈕,如“打開”、“保存”、“上一張”、“下一張”、“放大”、“縮小”、“旋轉(zhuǎn)”等。 圖 4 軟件菜單及工具欄 軟件在 全屏狀態(tài)下的浮動工具條及右鍵菜單如圖 5 所示。圖像的顯示模塊及變換模塊也就是針對此緩沖區(qū)的數(shù)據(jù)進(jìn)行操作。 //指向圖像解碼后數(shù)據(jù)緩沖區(qū)的指針 CJpeg* m_pJpeg。 //圖像實(shí)際高度 int m_nDrawWidth。 //解碼后數(shù)據(jù)一個掃描行所占字節(jié)數(shù) int m_nImage。 14 Int m_nOriginWidth。 BOOL m_bBufferIsOriginal。 //標(biāo)志圖像數(shù)據(jù)的存儲方式 ifdef UC_USE_DC //是否使用 DC,如果使用則圖像解碼后 HBITMAP m_hBitmap。 m_pGif=NULL。 //而該類已摧毀,故那部分空間已由其收回。 m_pJpeg=NULL。 m_pPal=NULL。 BOOL ReadTga(LPBYTE pBuffer,UINT uLength,int ndegree)。 BOOL SavePcx(LPCTSTR lpstrFileName, CDib* pDib)。 //類 LanImage BMP 解碼 /編碼模塊 上面的內(nèi)容已經(jīng)對 BMP 圖像的存儲格式進(jìn)行了分析。 ReadBmp()函數(shù)中讀取圖像數(shù)據(jù)信息的代碼如下: BYTE * pTemp=GetLine(m_nHeight1)。 16 pTemp =m_nPitch。 BYTE rgbGreen。 do { i=0。amp。 /* write pixel value */ t +=i。 /* write identify sign 0xc1 */ ++j。 return (ferror(fp)?FALSE:TRUE)。 //01 UC+PAL,02 UC+NP 03 UC+BW,09 RLE+PAL,0A RLE+NP 0B RLE+BW WORD wPalFirstNdx。//X WORD wBottom。 BYTE desc。 Char signature[18]。 register int Num。0x80)==0x80) { Num=(Dataamp。 iNum。 iNumPixel =Num。 InBuffer +=Num。 register DWORD Count 。Data, InBuffer, iColorBit)。 while ((Count 0x7F)amp。 //下一個像素 if (Next !=Data) break 。 } if (Count==1) //無重復(fù)像素 { while ((Count 0x7F)amp。 21 InBuffer +=iColorBit 。 //下一個像素 if (Data==Next) break 。 OutBuffer +=Count 。 OutBuffer +=iColorBit 。具體的轉(zhuǎn)換方法將在后面進(jìn)行詳細(xì)地說明,這里不再贅述。 1) 如果用戶選擇了使用載入特效,那么在第一次顯示時,應(yīng)該調(diào)用特效顯示模塊以動畫方式將圖像顯示出來。 3) 如果進(jìn)行了全屏和非全屏模式的切換,由于用戶區(qū)的大小發(fā)生了變化,那么原來圖像顯示的位置就不是在用戶區(qū)的中央,必須重新計(jì)算圖像的顯示位置。 if(pFramem_bScrModeChged) //進(jìn)行了顯示模式切換,重新計(jì)算圖片顯示位置 { CRect rect。 //計(jì)算寬度 _nWindowHeight=。 if(m_nWindowHeight) m_showY=m_nWindowHeight/。 hdc:設(shè)備 DC 句柄。 nDh:目標(biāo)區(qū)域高度。 nSh:源區(qū)域高度。實(shí)現(xiàn)全屏瀏覽模塊的 流程圖 如 圖 8 所示 : 24 圖 8 全屏瀏覽模塊流程圖 圖像縮放模塊 圖像的縮放是由 LanImage 的 Draw()函數(shù)實(shí)現(xiàn)的,由前面的內(nèi)容可知, Draw()函數(shù)提供的參數(shù)主要有兩部分,一部分是目標(biāo)區(qū)域的位置和大小,另一部分是源圖像區(qū)域的位置和大小。 圖像旋轉(zhuǎn)模塊 圖像旋轉(zhuǎn)的實(shí)現(xiàn)較為復(fù)雜,是本設(shè)計(jì)中的難點(diǎn)。 因此,要實(shí)現(xiàn)旋轉(zhuǎn),必須在內(nèi)存中對圖像數(shù)據(jù)的緩沖區(qū)先做好變換,然后一次性調(diào)用Draw()函數(shù)將其繪制在屏幕上。 流程圖如 圖 10 所示: 圖 10 圖像旋轉(zhuǎn)模塊流程圖 圖像特效顯示 與圖像的旋轉(zhuǎn)一樣,圖像的特效顯示也有兩種實(shí)現(xiàn)思路。但是,由于特效所需幀數(shù)并不太多,因此使用 Draw()函數(shù)的方法也是可行的,并且是現(xiàn)在常用的基本特效實(shí)現(xiàn)方法之一;內(nèi)存特效的實(shí)現(xiàn)難度較大。 步驟 1: 根據(jù)圖像大小選擇合適的馬賽克塊的大小。 步驟 5: 計(jì)數(shù),如果循環(huán)次數(shù)未達(dá)到 i j,返回步驟 4 繼續(xù)執(zhí)行,否則結(jié)束。在設(shè)計(jì)過程中,我遇到了許多的技術(shù)問題,下面介紹該系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的關(guān)鍵技術(shù)和技術(shù)難點(diǎn)。 本設(shè)計(jì)是通過在 LanImage 類中加入 Bool 型變量 m_bReadWithLibSupport 來判斷是否使 用了 JPEG 和 GIF 讀寫庫的。 =NULL。 =NULL。 delete pTempGif。因此,在圖像打開時需要進(jìn)行緩沖區(qū)的轉(zhuǎn)換。以 JPEG 為例,代碼如下( GIF 與 JPEG 類似): if( (_tcsicmp(pszExt,.jpg)==0)|| (_tcsicmp(pszExt,.jpeg)==0)) { m_bReadWithLibSupport=TRUE。 return FALSE。 m_nHeight=pDibGetHeight()。 m_nPalette=0。 =sizeof(BITMAPINFOHEADER)。 =m_nBitCount。 =0。 //分新的 DIB分配空間,并將圖像數(shù)據(jù)復(fù)制到此空間中 DWORD dwHeaderSize=sizeof(BITMAPINFOHEADER)。 else hDIB=GlobalAlloc(GHND, dwHeaderSize+dwPaletteSize+dwBitsSize)。bmiHeader, dwHeaderSize)。 (*pDib)Attach(hD
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1