數(shù)字圖像處理何東鍵版-VC++圖像編程基礎(chǔ)_第1頁
數(shù)字圖像處理何東鍵版-VC++圖像編程基礎(chǔ)_第2頁
數(shù)字圖像處理何東鍵版-VC++圖像編程基礎(chǔ)_第3頁
數(shù)字圖像處理何東鍵版-VC++圖像編程基礎(chǔ)_第4頁
數(shù)字圖像處理何東鍵版-VC++圖像編程基礎(chǔ)_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第三章VC++圖像編程基礎(chǔ)3.1VC++可視化編程3.2ImageLoad.dll動(dòng)態(tài)鏈接庫(kù)3.3設(shè)計(jì)CDibObject類3.4使用CDibObject類3.5CDibObject類應(yīng)用實(shí)例3.1VC++可視化編程3.1.1概述

VC++是Microsoft公司推出的開發(fā)Win32應(yīng)用程序(Windows95/98/2000/XP/NT)的面向?qū)ο蟮目梢暬晒ぞ摺kS著VC++所提供的Microsoft基礎(chǔ)類庫(kù)(MicrosoftFoundationClassLibrary,簡(jiǎn)寫為MFC),對(duì)Windows95/NT所用的Win32應(yīng)用程序接口(Win32ApplicationProgrammingInterface—API)進(jìn)行了徹底的封裝,從而可以使用完全的面向?qū)ο蟮姆椒▉磉M(jìn)行Win32應(yīng)用程序的開發(fā),這樣大大縮短了應(yīng)用程序開發(fā)周期,降低了開發(fā)成本,也將程序員從大量的復(fù)雜勞動(dòng)中解放出來。VC++DeveloperStudio包含有編寫程序源代碼的文本編輯器、設(shè)計(jì)用戶界面(菜單、對(duì)話框、圖標(biāo)等)的資源編輯器、建立項(xiàng)目配置的項(xiàng)目管理器、檢查程序錯(cuò)誤的集成調(diào)試器等工具,同時(shí)它還提供了功能強(qiáng)大的應(yīng)用程序向?qū)Чぞ逜ppWizard和類向?qū)Чぞ逤lassWizard。AppWizard用于生成各種不同類型的具有Windows界面風(fēng)格的應(yīng)用程序的基本框架,在生成應(yīng)用程序框架后,使用ClassWizard便可輕松完成創(chuàng)建新類、定義消息處理函數(shù)、重載虛擬函數(shù)等操作。3.1.2用戶界面圖3-1VC++6.0用戶界面VC++6.0提供有多種不同用途的菜單命令和工具按鈕,多數(shù)菜單和工具按鈕是人們熟悉的標(biāo)準(zhǔn)Windows菜單和工具銨鈕。用VC++6.0開發(fā)應(yīng)用程序主要涉及三大類型的文件:文件(Files)、項(xiàng)目(Projects)和工作區(qū)(Workspaces)。在VC++6.0中,通常意義下開發(fā)一個(gè)Windows應(yīng)用程序是指生成一個(gè)項(xiàng)目,該項(xiàng)目包含著一組相關(guān)的文件,如各種頭文件(.h)、實(shí)現(xiàn)文件(.cpp)、資源文件(.rc)、圖標(biāo)文件(.ico)、位圖文件(.bmp)等,而該項(xiàng)目必須在一個(gè)工作區(qū)打開。所以,當(dāng)?shù)谝淮谓⒁粋€(gè)應(yīng)用程序時(shí),應(yīng)選擇新建一個(gè)項(xiàng)目,此時(shí)VC++6.0自動(dòng)建立一個(gè)工作區(qū),并把新建的項(xiàng)目在該工作區(qū)中打開,以后要對(duì)該項(xiàng)目進(jìn)行修改、補(bǔ)充、增加等工作,只要打開對(duì)應(yīng)的工作區(qū)即可。VC++6.0以項(xiàng)目工作區(qū)(ProjectWorkspace)的方式來組織文件、項(xiàng)目和項(xiàng)目配置,通過項(xiàng)目工作區(qū)窗口可以查看和訪問項(xiàng)目中的所有元素。首次創(chuàng)建項(xiàng)目工作區(qū)時(shí),要?jiǎng)?chuàng)建一個(gè)項(xiàng)目工作區(qū)目錄、一個(gè)項(xiàng)目工作區(qū)文件、一個(gè)項(xiàng)目文件和一個(gè)工作區(qū)選項(xiàng)文件。項(xiàng)目工作區(qū)文件用于描述工作區(qū)及其內(nèi)容,擴(kuò)展名為.dsw。項(xiàng)目文件用于記錄項(xiàng)目中各種文件的名字和位置,擴(kuò)展名為.dsp。工作區(qū)選項(xiàng)文件用于存儲(chǔ)項(xiàng)目工作區(qū)設(shè)置,擴(kuò)展名為.opt。創(chuàng)建或者打開項(xiàng)目工作區(qū)時(shí),VC++6.0將在項(xiàng)目工作區(qū)窗口中顯示與項(xiàng)目有關(guān)的信息。項(xiàng)目工作區(qū)窗口主要由三個(gè)面板構(gòu)成,即FileView、ResouceView和ClassView,分別用于顯示項(xiàng)目中定義的C++類、資源文件和包含在項(xiàng)目工作區(qū)中的文件。每個(gè)面板用于指定項(xiàng)目工作區(qū)中所有項(xiàng)目的不同視圖,視圖中每個(gè)文件夾可以包含其他文件夾或各種元素(如,子項(xiàng)目、文件、資源、類和標(biāo)題等)。通過項(xiàng)目工作區(qū)窗口可以定位到項(xiàng)目中的任一位置,以對(duì)其進(jìn)行相應(yīng)的編輯(源程序、資源等)編輯區(qū)窗口打開文本編輯器和資源編輯器。文本編輯器的使用與Word非常類似,通過它可方便的進(jìn)行程序源代碼的輸入、編輯和修改工作。在資源編輯器中可進(jìn)行各種資源的編輯工作,如對(duì)話框、圖標(biāo)、菜單、位圖等,從而直觀地設(shè)計(jì)程序的用戶界面。輸出窗口用于顯示項(xiàng)目建立過程中所產(chǎn)生的錯(cuò)誤信息、調(diào)試過程中的輸出信息等,用它可以方便地定位到工程中的錯(cuò)誤位置,觀察到程序調(diào)試過程中的輸出結(jié)果。3.1.3框架和文檔—視結(jié)構(gòu)基于MFC的應(yīng)用程序框架(ApplicationFramework)是定義了程序結(jié)構(gòu)的MFC類庫(kù)中類的集合,它是VC++編程的骨架。運(yùn)用MFC應(yīng)用程序框架具有如下優(yōu)點(diǎn):(1)標(biāo)準(zhǔn)化的程序結(jié)構(gòu)和用戶接口:這對(duì)具有標(biāo)準(zhǔn)用戶界面的Win32程序來說,可以極大地減輕程序員的負(fù)擔(dān),使程序員不必過多地考慮界面,而把主要精力放在程序設(shè)計(jì)上,以提高程序設(shè)計(jì)的效率。(2)框架產(chǎn)生的程序代碼短,運(yùn)行速度快,具有很大的靈活性。(3)MFC封裝了Win32SDK中的幾乎所有的函數(shù),能夠?qū)崿F(xiàn)Win32系統(tǒng)的任何功能。MFC框架的核心是文檔—視結(jié)構(gòu)(Document-ViewArchitecture)。簡(jiǎn)單地說,文檔—視結(jié)構(gòu)就是將數(shù)據(jù)和對(duì)數(shù)據(jù)的觀察相分離,文檔僅處理數(shù)據(jù)的讀、寫等操作,視則是顯示和處理數(shù)據(jù)的窗口,視可以操作文檔中的數(shù)據(jù)。MFC框架的基本結(jié)構(gòu)包括應(yīng)用程序?qū)ο蟆⒅骺蚣艽翱?、文檔、視等,框架通過命令和消息將它們結(jié)合在一起,共同對(duì)用戶的操作做出響應(yīng)。應(yīng)用程序的對(duì)象類由CWinApp派生,一個(gè)應(yīng)用程序有且僅有一個(gè)應(yīng)用程序?qū)ο螅?fù)責(zé)應(yīng)用程序?qū)嵗某跏蓟瓦M(jìn)程結(jié)束時(shí)的資源清除,以及創(chuàng)建和管理應(yīng)用程序所支持的所有文檔模板的工作。主框架窗口是應(yīng)用程序的主窗口。MFC框架定義了兩種基本的主框架窗口類,即單文檔接口SDI(SingleDocumentInterface)主框架窗口類和多文檔接口MDI(MultipleDocumentInterface)主框架窗口類。對(duì)于SDI,視是主框架窗口的子窗口;對(duì)于MDI,必須從CMDIChildWnd派生出主框架窗口的子窗口,視是該子窗口的子窗口。文檔類由CDocument類派生,文檔是一個(gè)應(yīng)用程序數(shù)據(jù)元素的集合,它構(gòu)成應(yīng)用程序所使用的數(shù)據(jù)單元,另外,它還提供了管理和維護(hù)數(shù)據(jù)的手段。文檔是一種數(shù)據(jù)源,數(shù)據(jù)源有很多種,最常見的是磁盤文件,但它不一定是一個(gè)磁盤文件,文檔的數(shù)據(jù)源也可以來自串行口、網(wǎng)絡(luò)或攝像機(jī)輸入信號(hào)等。視類從CView或其子類(CEditView、CFormView、CRecordView、CScrollView等)派生,是數(shù)據(jù)的用戶窗口,為用戶提供了文檔可視的數(shù)據(jù)顯示,它將文檔的部分或全部?jī)?nèi)容顯示在窗口中。視還給用戶提供了一個(gè)與文檔中的數(shù)據(jù)進(jìn)行交互的界面,它把用戶的輸入轉(zhuǎn)化為對(duì)文檔中數(shù)據(jù)的操作。每個(gè)文檔都會(huì)有一個(gè)或多個(gè)視顯示,一個(gè)視既可以輸出到屏幕窗口中,也可以輸出到打印機(jī)上。圖3-2MFC應(yīng)用程序框架結(jié)構(gòu)(a)SDI框架結(jié)構(gòu);(b)MDI框架結(jié)構(gòu)文檔—視結(jié)構(gòu)大大簡(jiǎn)化了多數(shù)應(yīng)用程序的設(shè)計(jì)開發(fā)過程。它帶來的好處主要有:(1)將數(shù)據(jù)操作和數(shù)據(jù)顯示、用戶界面分離。這是一種“分而治之”的思想,這種思想使得模塊劃分更加合理、模塊獨(dú)立性更強(qiáng),同時(shí)也簡(jiǎn)化了數(shù)據(jù)操作和數(shù)據(jù)顯示、用戶界面設(shè)計(jì)工作。文檔只負(fù)責(zé)數(shù)據(jù)管理,不涉及用戶界面;視只負(fù)責(zé)數(shù)據(jù)輸出與用戶界面的交互,可以不考慮應(yīng)用程序的數(shù)據(jù)是如何組織的,甚至當(dāng)文檔中的數(shù)據(jù)結(jié)構(gòu)發(fā)生變化時(shí)也不必改動(dòng)視的代碼。(2)MFC在文檔—視結(jié)構(gòu)中提供了許多標(biāo)準(zhǔn)操作界面,包括新建文件、打開文件、保存文件、打印等,減輕了用戶的工作量。用戶不必再編寫這些重復(fù)的代碼,從而可以把更多的精力放到編寫應(yīng)用程序特定功能的代碼上(主要是從數(shù)據(jù)源中讀取數(shù)據(jù)和顯示)。(3)支持打印和打印預(yù)覽,用戶無需編寫代碼或只需要編寫很少的代碼,就可以為應(yīng)用程序提供打印和打印預(yù)覽功能。同樣的功能如果自己寫的話,需要數(shù)千行代碼。由于文檔—視結(jié)構(gòu)功能強(qiáng)大,因此一般用VC++進(jìn)行程序設(shè)計(jì)時(shí)都首先使用AppWizard生成基于文檔—視結(jié)構(gòu)的單文檔或多文檔應(yīng)用程序框架,然后在其中添加自己需要的代碼,完成應(yīng)用程序的特定功能。3.1.4編程基本流程VC++的資源編輯器能以所見即所得(Whatyouseeiswhatyouget)的形式直接編輯應(yīng)用程序用戶界面,為所有資源分配ID標(biāo)識(shí)號(hào)。ClassWizard能把對(duì)話框模板與自動(dòng)生成的類定義或與已有的類代碼連接起來,為菜單項(xiàng)、控件等資源生成空的處理函數(shù)模板,創(chuàng)建消息映射函數(shù)模板,并將資源ID與處理函數(shù)聯(lián)接起來。通過使用AppWizard,程序員的編程工作便簡(jiǎn)化為用資源編輯器直觀地設(shè)計(jì)界面,完善對(duì)話框類代碼。在空的處理函數(shù)模板處填寫響應(yīng)用戶操作的代碼,是一種完善的可視化編程方法。用VC++進(jìn)行Win32可視化編程的基本流程如下:(l)生成框架:運(yùn)行AppWizard,并按需要指定生成應(yīng)用程序的選項(xiàng),指定框架中視類的基類(CView、CEditView、CFormView、CScrollView、CTreeView等)。AppWizard將按指定的選項(xiàng)生成應(yīng)用程序框架和相關(guān)的文件,包括項(xiàng)目(project)的工作空間(workspace)文件和源文件,主要是應(yīng)用程序(application)、文檔(document)、視(view)和主框窗口(mainframe)的C++代碼文件(*.cpp,*.h文件),以及缺省包含標(biāo)準(zhǔn)界面接口的資源文件(*.rc)。(2)設(shè)計(jì)用戶界面:利用VC++資源編輯器編輯資源文件,設(shè)計(jì)菜單、對(duì)話框、工具條、字符串、加速鍵、位圖、圖標(biāo)、光標(biāo)等項(xiàng)目資源。(3)聯(lián)接界面和代碼:利用ClassWizard把資源文件中定義的界面資源標(biāo)識(shí)ID(如菜單項(xiàng)、工具條和對(duì)話框中的控件等)在指定的源文件中映射成相應(yīng)的函數(shù)模板。(4)編寫、修改函數(shù)代碼:利用ClassWizard可以方便地在源代碼編輯器(sourcecodeeditor)中跳轉(zhuǎn)到指定的函數(shù)代碼處。(5)根據(jù)需要?jiǎng)?chuàng)建新類和編寫代碼:用ClassWizard創(chuàng)建新類,并生成相應(yīng)的源文件。如新類是對(duì)話框類,可先用資源編輯器生成對(duì)話框模板,然后用ClassWizard創(chuàng)建對(duì)話框類代碼,并與模板聯(lián)接,編寫新類相關(guān)的源代碼。(6)實(shí)現(xiàn)文檔類:在AppWizard生成的框架基礎(chǔ)上設(shè)計(jì)文檔數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),在文檔類中增加相應(yīng)的成員變量和成員函數(shù),實(shí)現(xiàn)對(duì)數(shù)據(jù)的操作和文檔與數(shù)據(jù)的接口。(7)實(shí)現(xiàn)框架中標(biāo)準(zhǔn)的文件操作命令,即Open、Save和SaveAs命令:框架已完成標(biāo)準(zhǔn)的文件操作命令的所有接口,程序員要做的僅僅是編寫文檔類的串行化(Serialize())成員函數(shù)。(8)實(shí)現(xiàn)視類:框架已構(gòu)造好了文檔與視的關(guān)系,視能方便地訪問文檔中的public數(shù)據(jù)成員,可根據(jù)文檔的需要構(gòu)造一個(gè)或多個(gè)視類。通過ClassWizard把視的用戶接口資源映射成函數(shù)模板,并編寫函數(shù)代碼。(9)如需要,增加分割窗口(splitterwindow):在SDI的主框窗口類或MDI的子窗口類中添加一個(gè)CSplitterWnd對(duì)象,并在窗口類的OnCreateClient成員函數(shù)中對(duì)CSplitterWnd對(duì)象進(jìn)行創(chuàng)建和初始化。如果用戶分割了一個(gè)窗口,框架將給文檔創(chuàng)建并增加附加的視對(duì)象。(10)建立、調(diào)試、修改應(yīng)用程序。如有問題,可根據(jù)需要重復(fù)步驟(2)~(10)。(11)測(cè)試應(yīng)用程序。如有問題,可根據(jù)需要重復(fù)步驟(2)~(11)。(12)結(jié)束。3.2ImageLoad.dll動(dòng)態(tài)鏈接庫(kù)3.2.1ImageLoad.dll庫(kù)簡(jiǎn)介

使用VC++6.0提供的DependencyWalker工具,可以查看ImageLoad.dll的導(dǎo)出函數(shù)列表,如圖3-3所示??梢?,該動(dòng)態(tài)鏈接庫(kù)共有22個(gè)函數(shù),其中18個(gè)函數(shù)與圖像文件的讀寫操作有關(guān),這些函數(shù)分為三類:Load函數(shù)用于讀入圖像文件;Save函數(shù)用于保存圖像文件;Get函數(shù)用于獲取圖像文件的相關(guān)信息。對(duì)于ImageLoad.dll動(dòng)態(tài)鏈接庫(kù),查看其定義頭文件ImageLoad.h便可對(duì)其屬性(成員變量)和方法(成員函數(shù))有一全面的了解。3-3//ImageLoad.h////////////////////////Generic///////////////////////ImageType#defineIMAGETYPE_NONE 0#defineIMAGETYPE_BMP 1#defineIMAGETYPE_GIF 2#defineIMAGETYPE_PCX 3#defineIMAGETYPE_TGA 4#defineIMAGETYPE_JPG 5#defineIMAGETYPE_TIF 6#ifdef--cplusplusextern"C"{#endif//Errorint--declspec(dllexport)GetLastPicLibError(void);//Typefilenameint--declspec(dllexport)FileType(constchar*);/////////////////////////BMP/////////////////////////hDibfilenameHGLOBAL--declspec(dllexport)LoadBMP(constchar*);//SuccessfilenamewhplanesbitscolorsBOOL--declspec(dllexport)GetBMPInfo(constchar*,int*,int*,int*,int*,int*);//SuccessfilenamehDibBOOL--declspec(dllexport)SaveBMP(constchar*,HGLOBAL);///////////////////////////GIF//////////////////////////hDibfilenameHGLOBAL--declspec(dllexport)LoadGIF(constchar*);//SuccessfilenamewhplanesbitscolorsBOOL--declspec(dllexport)GetGIFInfo(constchar*,int*,int*,int*,int*,int*);//SuccessfilenamehDibBOOL--declspec(dllexport)SaveGIF(constchar*,HGLOBAL);//////////////////////////PCX/////////////////////////hDibfilenameHGLOBAL--declspec(dllexport)LoadPCX(constchar*);//SuccessfilenamewhplanesbitscolorsBOOL--declspec(dllexport)GetPCXInfo(constchar*,int*,int*,int*,int*,int*);//SuccessfilenamehDibBOOL--declspec(dllexport)SavePCX(constchar*,HGLOBAL);/////////////////////////TGA/////////////////////////hDibfilenameHGLOBAL--declspec(dllexport)LoadTGA(constchar*);//SuccessfilenamewhplanesbitscolorsBOOL--declspec(dllexport)GetTGAInfo(constchar*,int*,int*, int*,int*,int*);//SuccessfilenamehDibBOOL--declspec(dllexport)SaveTGA(constchar*,HGLOBAL);//////////////////////////TIF/////////////////////////hDibfilenameHGLOBAL--declspec(dllexport)LoadTIF(constchar*);//SuccessfilenamewhplanesbitscolorsBOOL--declspec(dllexport)GetTIFInfo(constchar*,int*,int*, int*,int*,int*);//SuccessfilenamehDibBOOL--declspec(dllexport)SaveTIF(constchar*,HGLOBAL);//////////////////////////JPG////////////////////////hDibfilenameHGLOBAL--declspec(dllexport)LoadJPG(constchar*);//SuccessfilenamewhplanesbitscolorsBOOL--declspec(dllexport)GetJPGInfo(constchar*,int*,int*,int*, int*,int*);

//SuccessfilenamehDibBOOL--declspec(dllexport)SaveJPG(constchar*,HGLOBAL,int);//////////////////////PALETTE////////////////////////CountRGBHistoryColormapMaxColorsWORD--declspec(dllexport)MedianCut(WORDHist[],BYTEColMap[][3],int);WORD--declspec(dllexport)Popularity([ZK(]unsignedchar*pBits,intnBits,intnWidth,intnHeight,BYTEColorMap[][3]);[ZK)]

#ifdef--cplusplus}#endif另外,為處理出錯(cuò)信息,還定義了一個(gè)ImageErros.h文件來聲明讀寫圖像文件時(shí)的錯(cuò)誤代碼,其內(nèi)容如下://ImageErros.h#ifndef--ERRORS_H--#define--ERRORS_H--

#defineIMAGELIB_SUCCESS0//Fileerrors#defineIMAGELIB_FILE_OPEN_ERROR 1#defineIMAGELIB_FILE_CREATION_ERROR -2#defineIMAGELIB_FILE_WRITE_ERROR -3#defineIMAGELIB_FILE_READ_ERROR -4

//Memoryerros#defineIMAGELIB_MEMORY_ALLOCATION_ERROR -50#defineIMAGELIB_MEMORY_LOCK_ERROR -51//Argumenterrors#defineIMAGELIB_NODIB-100

//Operateerrors#defineIMAGELIB_UNSUPPORTED_FILETYPE -200#defineIMAGELIB_HDIB_NULL -201#defineIMAGELIB_LOGICAL_PALETTE_CREATION_ERROR -202#defineIMAGELIB_NO_PALETTE_FOR_HIGH_COLOR -203#defineIMAGELIB_STRETCHDIBITS_ERROR -204#defineIMAGELIB_PALETTE_QUANTIZE_ERROR -205#defineIMAGELIB_ATTEMPT_CHANGE_TO_SAME -206#defineIMAGELIB_ROTATION_VALUE_ERROR -207#defineIMAGELIB_ROTATE_ERROR -208

#endif3.3.2ImageLoad.dll動(dòng)態(tài)鏈接庫(kù)的使用要使用ImageLoad.dll動(dòng)態(tài)鏈接庫(kù),需如下四個(gè)步驟:(1)將ImageLoad.dll拷貝到應(yīng)用程序所在的目錄、Windows目錄、Windows\System目錄或Windows\System32目錄。(2)將ImageErros.h、ImageLoad.h兩個(gè)頭文件及ImageLoad.lib庫(kù)文件拷貝到當(dāng)前工程目錄或是在VC++集成開發(fā)環(huán)境中設(shè)置其所在的路徑。(3)用VC++的Project\Addtoproject\Files...菜單將ImageLoad.lib添加到工程中。(4)在要用到ImageLoad.dll的C++頭文件(.h)或?qū)崿F(xiàn)文件(.cpp)中用#include"ImageErros.h"和#include"ImageLoad.h"兩個(gè)語句將兩個(gè)頭文件包含到應(yīng)用程序的設(shè)計(jì)中。這樣就可以利用ImageLoad.dll動(dòng)態(tài)鏈接庫(kù)提供的相應(yīng)函數(shù),來完成六種格式圖像文件的讀寫操作。3.3設(shè)計(jì)CDibObject類由于MFC沒有封裝處理與DIB位圖相關(guān)的WindowsAPI函數(shù)的類,所以本著面向?qū)ο蟮乃枷耄斜匾O(shè)計(jì)一個(gè)CDibObject類來完成如下功能:讀取某種類型的圖像文件;獲取圖像的相關(guān)信息;顯示圖像;以相同或不同類型格式的圖像文件保存該圖像。從而在以后的數(shù)字圖像處理中,可方便地將CDibObject類添加進(jìn)設(shè)計(jì)的工程中以完成相應(yīng)的處理。3.3.1公用方法的設(shè)計(jì)根據(jù)對(duì)CDibObject類的基本要求,它至少應(yīng)該具有下述方法(成員函數(shù)):(1)構(gòu)造函數(shù):該類應(yīng)提供三個(gè)不同版本的構(gòu)造函數(shù),一個(gè)是無參構(gòu)造函數(shù),用于動(dòng)態(tài)創(chuàng)建對(duì)象;一個(gè)是接受文件名作為參數(shù)的構(gòu)造函數(shù),用于創(chuàng)建一個(gè)與由文件名指定的圖像文件相對(duì)應(yīng)的有意義的對(duì)象;另外,還應(yīng)提供一個(gè)復(fù)制構(gòu)造函數(shù),以便將一個(gè)CDibObject類對(duì)象的屬性直接復(fù)制到另一個(gè)CDibObject類對(duì)象中。(2)Load()函數(shù):該函數(shù)將一個(gè)圖像文件裝入CDibObject類對(duì)象,它以接受的文件名作為參數(shù)。(3)Save()函數(shù):該函數(shù)用指定的文件名將保存在CDibObject類對(duì)象中的當(dāng)前圖像保存為一個(gè)圖像文件,該文件名同時(shí)也應(yīng)指定保存圖像的文件類型。(4)Draw()函數(shù):該函數(shù)在指定的設(shè)備描述表上繪制圖像,它應(yīng)接受指向該設(shè)備環(huán)境的指針作為參數(shù)。調(diào)用此繪圖函數(shù)時(shí),也應(yīng)該指定繪制圖像的位置坐標(biāo)。(5)與圖像信息有關(guān)的函數(shù):即一系列用于獲取和設(shè)置類屬性的Get/Set函數(shù)。這些函數(shù)用來獲取和設(shè)置圖像的各種信息,如圖像的類型、高度、寬度、位平面數(shù)、單個(gè)像素的位數(shù)、圖像使用的顏色數(shù)等。(6)與調(diào)色板操作有關(guān)的函數(shù):即用于創(chuàng)建、獲取、設(shè)置邏輯或系統(tǒng)調(diào)色板的顏色數(shù)和調(diào)色板數(shù)據(jù)等信息的函數(shù)。3.3.2類屬性的設(shè)計(jì)

CDibObject類主要應(yīng)設(shè)計(jì)如下屬性(成員變量):(1)char*m_pszFilename:此變量用來保存圖像文件名。(2)intm_nImageType:此變量用來保存圖像類型,圖像類型由文件“ImageLoad.h”定義。值得注意的是,圖像的類型必須使用“ImageLoad.h”定義的原始順序,它與“ImageLoad.dll”中的函數(shù)FileType返回的int類型的值相對(duì)應(yīng),對(duì)此不能進(jìn)行改變。(3)charszExtensions[]:這是一個(gè)數(shù)組變量,用來保存圖像文件的擴(kuò)展名(即在打開文件對(duì)話框中的文件過濾器),其值為".BMP"、".GIF"、".PCX"、".TGA"、".JPG"、".TIF"和""(空字符串)。(4)HGLOBALm_hDib:當(dāng)圖像載入后,使用此變量獲取該圖像的DIB(DeviceIndependentBitmap——設(shè)備無關(guān)位圖)句柄。實(shí)際上無論什么類型的圖像文件,如果要在Windows操作系統(tǒng)中顯示,都應(yīng)該使用DIB位圖格式。(5)intm_nWidth,m_nHeight,m_nPlanes,m_nBits,m_nColors:這些變量分別描述圖像的寬度、高度、位平面數(shù)、每像素的位數(shù)(1、4、8、16、24或32位)和顏色數(shù)。(6)intm_nX,m_nY:用這兩個(gè)變量確定繪制圖像的左上角位置。(7)CPalettem_Palette:此變量指定圖像中使用的調(diào)色板對(duì)象。(8)intm_nPaletteCreationType:當(dāng)需要通過顏色還原一幅具有調(diào)色板的圖像時(shí),使用此變量確定調(diào)色板類型。其中,0表示JGPT_POPULARITY_PALETTE,1表示JGPT_MEDIAN_CUT_PALETTE,2表示JGPT_FIXED_PALETTE。(9)LOGPALETTE*m_pLogPal:該指針型變量用來指向圖像所使用的邏輯調(diào)色板。(10)intm_nQuality:使用此變量描述JPEG圖像的壓縮質(zhì)量。該值為0到100之間的整數(shù),其值越大,圖像質(zhì)量越好,但文件尺寸也將越大。(11)intm_nLastError:該變量用來保存最后一次圖像處理中的錯(cuò)誤號(hào),錯(cuò)誤號(hào)由“ImageErros.h”頭文件定義。對(duì)于CDibObject類的構(gòu)造函數(shù)、載入和保存成員函數(shù)以及大多數(shù)Set/Get成員函數(shù)的意義都是暗含的,在此不再詳細(xì)討論。請(qǐng)讀者閱讀本書所附CD-ROM中的CDibObject類定義文件“DibObject.h”和實(shí)現(xiàn)文件“DibObject.cpp”,作者在程序源代碼中加入了詳盡的注釋,相信讀者能夠理解。3.4使用CDibObject類3.4.1添加CDibObject類定義文件將“DibObject.h”和“DibObject.cpp”兩個(gè)文件復(fù)制到當(dāng)前工程目錄。選擇VC++集成開發(fā)環(huán)境的Project\Addtoproject\Files...菜單項(xiàng),系統(tǒng)打開如圖3-4所示的“InsertFilesintoProject”對(duì)話框。圖3-4在工程中添加“DibObject.h”和“DibObject.cpp”選擇文件“DibObject.h”和“DibObject.cpp”,單擊“OK”將這兩個(gè)文件添加到當(dāng)前工程中。這樣便將上一節(jié)所設(shè)計(jì)的CDibObject類添加到當(dāng)前的工程中,從而可以使用類中提供的方法和屬性。3.4.2設(shè)置工程選項(xiàng)

要使用ImageLoad.dll動(dòng)態(tài)鏈接庫(kù),如前所述,先將其拷貝至Windows系統(tǒng)目錄下(Windows95/98為“System”目錄,Windows2000/XP/NT為“System32”目錄)或?qū)⑵鋸?fù)制到編譯后的應(yīng)用程序當(dāng)前目錄(“Debug”或“Release”目錄)。再將與ImageLoad.dll動(dòng)態(tài)鏈接庫(kù)相關(guān)的“ImageLoad.h”、“ImageLoad.lib”和“ImageErros.h”復(fù)制到當(dāng)前工程目錄。選擇VC++集成開發(fā)環(huán)境的Project\Settings...菜單項(xiàng),系統(tǒng)打開如圖3-5所示的“Project/Settings”對(duì)話框,在“Object/Librarymodules”編輯框中輸入“ImageLoad.lib”,單擊“OK”。如此便可在應(yīng)用程序中使用ImageLoad.dll動(dòng)態(tài)鏈接庫(kù)提供的多格式圖像文件的打開和保存函數(shù),輕松完成圖像文件的讀寫工作。圖3-5“Project/Settings”對(duì)話框3.5CDibObject類應(yīng)用實(shí)例3.5.1建立應(yīng)用程序框架

使用MFCAppWizard創(chuàng)建圖像處理應(yīng)用程序基本框架,其步驟如下:(1)從File菜單中選擇New菜單項(xiàng),彈出New對(duì)話框。(2)選擇Projects選項(xiàng)卡,從項(xiàng)目類型列表中選擇MFCAppWizard(.exe),在ProjectsName文本框中輸入項(xiàng)目名稱,這里設(shè)為Dip。(3)在MFCAppWizard-Step1對(duì)話框中選擇MDI用戶界面和中文[中國(guó)]。(4)在MFCAppWizard-Step6對(duì)話框中將CDipView類的基類改為CScrollView以支持視圖滾動(dòng)。(5)其他各選項(xiàng)采用默認(rèn)值。(6)單擊Finish按鈕,再單擊OK,MFCAppWizard將自動(dòng)生成圖像處理程序的各個(gè)源文件。3.5.2添加消息映射函數(shù)因?yàn)閼?yīng)用程序類CDipApp帶有自己的“文件/新建”和“文件/打開”菜單,在此為這兩個(gè)菜單項(xiàng)添加消息映射處理函數(shù)。使用MFCClassWizard分別為ID_FILE_NEW和ID_FILE_OPEN兩個(gè)菜單命令消息添加“OnFileNew”和“OnFileOpen”。MFCAppWizard自動(dòng)生成的Dip應(yīng)用程序框架在運(yùn)行時(shí)會(huì)自動(dòng)打開一個(gè)新的空白子窗口。若不希望出現(xiàn)此窗口,可以簡(jiǎn)單地聲明OnFileNew函數(shù),但不編寫任何代碼。3.5.3改寫OnFileOpen函數(shù)以打開圖像文件在Dip.cpp文件頭部添加如下代碼:charszFilter[]="位圖文件(*.BMP)|*.BMP|圖形交換格式文件(*.GIF)|*.GIF|PCX文件(*.PCX)|*.PCX|TGA文件(*.TGA)|*.TGA|JPEG文件(*.JPG)|*.JPG|標(biāo)記圖像文件(*.TIF)|*.TIF|所有支持圖片|*.BMP,*.GIF,*.PCX,*.TGA,*.JPG,*.TIF|所有文件(*.*)|*.*||";在此聲明的字符數(shù)組szFilter保存了文件打開和關(guān)閉對(duì)話框的過濾器數(shù)組。szFilter是一個(gè)包含有通配符的以“|”字符分隔的字符串。要注意的是,在第一個(gè)“|”字符之前是將要顯示在文件打開和保存對(duì)話框的“文件類型”列表框中的信息,第二個(gè)“|”字符和第一個(gè)“|”字符之間的內(nèi)容為對(duì)話框的過濾器內(nèi)容。在字符串szFilter的尾部,使用兩個(gè)“|”字符而不是一個(gè),表示過濾器內(nèi)容結(jié)束。注意:szFilter中不能包含任何空格,并且聲明為全局變量。成員函數(shù)CDip::OnFileOpen負(fù)責(zé)打開一個(gè)圖像文件,其代碼如下:voidCDipApp::OnFileOpen(){staticintnIndex=1;

CFileDialogFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFilter);FileDlg.m_ofn.nFilterIndex=(DWORD)nIndex;

if(FileDlg.DoModal()==IDOK){CStringPathName=FileDlg.GetPathName();PathName.MakeUpper();OpenDocumentFile(PathName);nIndex=(int)FileDlg.m_ofn.nFilterIndex;}}程序中聲明一個(gè)CFileDialog類的對(duì)象FileDlg,其第一個(gè)參數(shù)設(shè)置為TRUE,表示該對(duì)話框?yàn)椤按蜷_”對(duì)話框,其最后一個(gè)參數(shù)為設(shè)置好的過濾器數(shù)組,其他參數(shù)可參閱VC++幫助系統(tǒng)MSDN。程序接下來將FileDlg對(duì)象的m_ofn結(jié)構(gòu)的nFilterIndex字段設(shè)置為缺省的第一個(gè)過濾器值,并調(diào)用FileDlg.DoModal()成員函數(shù)顯示“打開”對(duì)話框。成員函數(shù)FileDlg.GetPathName()負(fù)責(zé)返回選擇的包含完整路徑信息的文件名,應(yīng)用程序類CDipApp的成員函數(shù)OpenDocumentFile將使用該文件名創(chuàng)建一個(gè)文檔。3.5.4添加CDibObject類對(duì)象成員變量

文檔類CDipDoc負(fù)責(zé)維護(hù)文檔的具體數(shù)據(jù)。因此,在該類中聲明兩個(gè)公有型的成員變量:public:BOOLm_bImageLoaded;CDibObject*m_pDibObject;其中,m_pDibObject為指向CDibObject類的指針,它將用于保存從圖像文件中獲取的圖像。成員變量m_bImageLoaded聲明為BOOL型,用來記錄圖像是否讀入內(nèi)存。

另外,聲明的指針型變量還應(yīng)在類的構(gòu)造函數(shù)和析構(gòu)函數(shù)中正確的初始化和釋放。為此,在CDipDoc類的構(gòu)造函數(shù)和析構(gòu)函數(shù)中添加如下代碼:CDipDoc::CDipDoc(){//TODO:addonetimeconstructioncodeherem_pDibObject=NULL;m_bImageLoaded=FALSE;}CDipDoc::~CDipDoc(){if(m_pDibObject!=NULL){deletem_pDibObject;m_pDibObject=NULL;}}注意:當(dāng)刪除了指針?biāo)赶虻膶?duì)象時(shí),相應(yīng)的指針本身并沒有刪除,此時(shí)指針變量本身的值指向何處就無法知道了,因此,再次將它賦值為NULL。要使程序能夠正確編譯,還必須在文件中添加定義CDibObject的頭文件,可以在“DipDoc.h”文件的頭部用#include將“DibObject.h”文件包含進(jìn)來。但考慮到工程中多處將用到CDibObject類,以及“DibObject.h”文件將很少再改動(dòng),所以將其直接包含在“StdAfx.h”文件中比較合適,于是在“StdAfx.h”文件中添加如下代碼: #include"DibObject.h"3.5.5為CDipDoc文檔類映射消息處理函數(shù)

使用MFCClassWizard分別為ID_FILE_NEW、ID_FILE_OPEN、ID_FILE_SAVEAS菜單命令消息添加消息映射處理函數(shù)OnFileNew()、OnFileOpen()和OnFileSaveAs()函數(shù)。(1)ID_FILE_NEW消息處理函數(shù)代碼如下: voidCDipDoc::OnFileNew() { //TODO:Addyourcommandhandlercodehere }與CDipApp類處理一樣,CDipDoc類的消息映射函數(shù)OnFileNew()什么也不干,以防止自動(dòng)打開一個(gè)新的空白子窗口。(2)ID_FILE_OPEN的消息處理函數(shù)代碼如下:[HT5”K]voidCDipDoc::OnFileOpen(){//TODO:AddyourcommandhandlercodeherestaticintnIndex=1;

CFileDialogFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFilter);FileDlg.m_ofn.nFilterIndex=(DWORD)nIndex;

if(FileDlg.DoModal()==IDOK){CStringstrPathName=FileDlg.GetPathName();AfxGetApp()->OpenDocumentFile(strPathName);nIndex=(int)FileDlg.m_ofn.nFilterIndex;if(!ReadImgToDoc()){AfxMessageBox("無法載入圖像文件!");return;}}}在CDipDoc類的消息映射函數(shù)OnFileOpen()中,除了要調(diào)用一個(gè)CDipDoc類的公有成員函數(shù)ReadImgToDoc()外(該函數(shù)將在后面進(jìn)行說明),其他與CDipApp類消息映射函數(shù)OnFileOpen()基本一樣。注意:在此再一次使用了數(shù)組szFilter,但它并不在“DipDoc.h”和“DipDoc.cpp”兩個(gè)文件中聲明,因此需要在“DipDoc.cpp”頭部添加如下外部聲明信息。//DipDoc.cpp:implementationoftheCDipDocclass//#include"stdafx.h"#include"Dip.h"#include"DipDoc.h"#include"MainFrm.h"#include"ChildFrm.h"#include"DipView.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=--FILE--;#endif

externcharszFilter[];在文件“DipDoc.cpp”中同時(shí)還包含了“MainFrm.h”、“ChildFrm.h”和“DipView.h”三個(gè)頭文件,因?yàn)镃DipDoc類的成員函數(shù)必須使用它們鏈接指定的代碼。成員函數(shù)ReadImgToDoc()負(fù)責(zé)讀入圖像對(duì)象文件,其聲明與實(shí)現(xiàn)文件如下。在“DipDoc.h”文件添加如下代碼://函數(shù)聲明public:BOOLReadImgToDoc();在“DipDoc.cpp”文件添加代碼://函數(shù)實(shí)現(xiàn)BOOLCDipDoc::ReadImgToDoc(){ CStringstrPathName=GetPathName();//設(shè)置等待光標(biāo)BeginWaitCursor();m_pDibObject=newCDibObject(strPathName.GetBuffer(3));//取消等待光標(biāo)EndWaitCursor();

//讀入圖像文件失敗if(m_pDibObject==NULL){AfxMessageBox("無法創(chuàng)建圖像類對(duì)象!");//返回FALSEreturn(FALSE);}//讀入圖像文件成功,設(shè)置相應(yīng)變量m_bImageLoaded=TRUE;//返回TRUEreturn(TRUE);}在ReadImgToDoc()成員函數(shù)中,首先設(shè)置等待光標(biāo),然后,以文件打開對(duì)話框返回的文件名為參數(shù)調(diào)用CDibObject類的構(gòu)造函數(shù)創(chuàng)建CDibObject對(duì)象m_pDibObject,從而將圖像文件中保存的圖像數(shù)據(jù)讀入內(nèi)存,并將文檔類的m_bImageLoaded設(shè)為TRUE。(3)ID_FILE_SAVE_AS消息處理函數(shù)代碼如下:

voidCDipDoc::OnFileSaveAs(){//TODO:AddyourcommandhandlercodeherestaticintnIndex=1;CFileDialogDialogSaveAs(FALSE,NULL,m_pDibObject->GetImageName(), OFN_HIDEREADONLY,szFilter);DialogSaveAs.m_ofn.nFilterIndex=(DWORD)nIndex;if(DialogSaveAs.DoModal()==IDOK){CMainFrame*pMainFrame=(CMainFrame*)AfxGetMainWnd();CChildFrame*pChildFrame=(CChildFrame*) pMainFrame->MDIGetActive();CDipView*pDipView=(CDipView*)pChildFrame->GetActiveView();

nIndex=(int)DialogSaveAs.m_ofn.nFilterIndex;if(nIndex==5){if(m_pDibObject->GetNumBits()!=24){AfxMessageBox("24位真彩色圖像才能存為JPEG格式!");return;}}if(m_pDibObject!=NULL){CStringstrPathName=DialogSaveAs.GetPathName();intnFindIndex=strPathName.Find(".");if(nFindIndex!=-1)strPathName=strPathName.Left(nFindIndex);strPathName+=CDibObject::szExtensions[nIndex-1];m_pDibObject->Save(strPathName);

CStringstrFileName=DialogSaveAs.GetFileName();nFindIndex=strFileName.Find(".");if(nFindIndex!=-1)strFileName=strFileName.Left(nFindIndex);strFileName+=CDibObject::szExtensions[nIndex-1];pChildFrame->SetWindowText(strFileName);SetPathName(strPathName);if(nIndex==5){m_pDibObject->Load(strPathName);pDipView->InvalidateRect(NULL,FALSE);pDipView->UpdateWindow();}}}}程序OnFileSaveAs()首先聲明一個(gè)CFileDialog類的一個(gè)實(shí)例DialogSaveAs,它的第一個(gè)參數(shù)為FALSE,表示是一個(gè)“另存為”對(duì)話框,第三個(gè)參數(shù)為m_pDibObject的成員函數(shù)[JP2]GetImageName()返回的m_pDibObject指定的CDibObject對(duì)象中的圖像文件的文件名。在調(diào)用DialogSaveAs的DoModal()顯示對(duì)話框后,程序中如下三個(gè)語句:CMainFrame*pMainFrame=(CMainFrame*)AfxGetMainWnd();CChildFrame*pChildFrame=(CChildFrame*)pMainFrame->MDIGetActive();CDipView*pDipView=(CDipView*)pChildFrame->GetActiveView()。這三個(gè)語句用來獲取應(yīng)用程序類的主框架窗口類CMainFrame、子框架窗口類CChildFrame和視類CDipView的指針pMainFrame、pChildFrame和pDipView,以完成對(duì)相應(yīng)類的操作。在此之后,OnFileSaveAs()獲取對(duì)話框的索引值。如果選擇了JPG文件類型(索引值為5),在圖像保存之前先用m_pDibObject->GetNumBits()獲取圖像每像素的位數(shù),判斷其值是否為24,若不是24位真彩色圖像,則不能將該圖像轉(zhuǎn)換為JPG文件類型,顯示出錯(cuò)信息。因?yàn)镴PG文件是有損壓縮,所以如果將24位非JPG文件存為JPG文件,還需要重新載入新的圖像數(shù)據(jù)并更新子窗口的顯示,這由成員函數(shù)m_pDibObject->Load(strPathName)、pDipView->InvalidateRect(NULL,FALSE)和pDipView->UpdateWindow()來完成。程序接下來調(diào)用成員函數(shù)m_pDibObject->Save(),將CDibObject對(duì)象中的圖像另存為指定格式的圖像文件。另外,一旦將文件更名保存,就需要將該圖像所屬的子窗口標(biāo)題欄中的標(biāo)題更新為新的文件名,成員函數(shù)pChildFrame->SetWindowText()便是負(fù)責(zé)此項(xiàng)任務(wù)的。到此為止,圖像讀入與保存的程序代碼就全部完成了,接下來的任務(wù)就是在屏幕上繪制圖像了。3.5.6繪制讀入的圖像具體的圖像繪制任務(wù)是在CDipView視類成員函數(shù)CDipView::OnDraw中完成的,其代碼如下:voidCDipView::OnDraw(CDC*pDC){CDipDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedatahereif(!pDoc->m_bImageLoaded){pDoc->LoadImageToDocument();}//滾動(dòng)窗口CSizesizeTotal;sizeTotal.cx=pDoc->m_pDibObject->GetWidth();sizeTotal.cy=pDoc->m_pDibObject->GetHeight();SetScrollSizes(MM_TEXT,sizeTotal);//獲取客戶區(qū)尺寸OnPrepareDC(pDC);CRectRect;GetClientRect(&Rect);//獲取圖像寬度及高度intnImageWidth,nImageHeight;nImageWidth=pDoc->m_pDibObject->GetWidth();nImageHeight=pDoc->m_pDibObject->GetHeight();

//當(dāng)圖像實(shí)際尺寸小于窗口尺寸時(shí),將圖像放在客戶區(qū)中間intnX,nY;if(nImageWidth<Rect.Width())nX=(Rect.Width()-nImageWidth)/2;elsenX=0;if(nImageHeight<Rect.Height())nY=(Rect.Height()-nImageHeight)/2;else

nY=0;

pDoc->m_pDibObject->Draw(pDC,nX,nY);}代碼含義非常清楚,勿需解釋。在此強(qiáng)調(diào)兩點(diǎn),一是當(dāng)程序沒有打開任何窗口時(shí),選擇“文件/打開”菜單項(xiàng)將調(diào)用的是視圖類的成員函數(shù)CDipView::OnFileOpen(),而不是文檔類的成員函數(shù)CDipDoc::OnFileOpen(),此時(shí)并沒有載入圖像數(shù)據(jù)。因此,必須調(diào)用文檔類的成員函數(shù)pDoc->LoadImageToDocument(),載入圖像數(shù)據(jù),并設(shè)置m_pDibObject指針。二是若圖像為有調(diào)色板的圖像,則由如下兩句設(shè)置正確的調(diào)色板:if(GetFocus()==this)pDoc->m_pDibObject->SetPalette(pDC);

到此為止,讀入、保存和顯示一幅圖像的代碼就完成了,大家可以編譯運(yùn)行此程序并打開幾個(gè)圖像文件來看看效果。第一節(jié)活塞式空壓機(jī)的工作原理第二節(jié)活塞式空壓機(jī)的結(jié)構(gòu)和自動(dòng)控制第三節(jié)活塞式空壓機(jī)的管理復(fù)習(xí)思考題單擊此處輸入你的副標(biāo)題,文字是您思想的提煉,為了最終演示發(fā)布的良好效果,請(qǐng)盡量言簡(jiǎn)意賅的闡述觀點(diǎn)。第六章活塞式空氣壓縮機(jī)

piston-aircompressor壓縮空氣在船舶上的應(yīng)用:

1.主機(jī)的啟動(dòng)、換向;

2.輔機(jī)的啟動(dòng);

3.為氣動(dòng)裝置提供氣源;

4.為氣動(dòng)工具提供氣源;

5.吹洗零部件和濾器。

排氣量:單位時(shí)間內(nèi)所排送的相當(dāng)?shù)谝患?jí)吸氣狀態(tài)的空氣體積。單位:m3/s、m3/min、m3/h第六章活塞式空氣壓縮機(jī)

piston-aircompressor空壓機(jī)分類:按排氣壓力分:低壓0.2~1.0MPa;中壓1~10MPa;高壓10~100MPa。按排氣量分:微型<1m3/min;小型1~10m3/min;中型10~100m3/min;大型>100m3/min。第六章活塞式空氣壓縮機(jī)

piston-aircompressor第一節(jié)活塞式空壓機(jī)的工作原理容積式壓縮機(jī)按結(jié)構(gòu)分為兩大類:往復(fù)式與旋轉(zhuǎn)式兩級(jí)活塞式壓縮機(jī)單級(jí)活塞壓縮機(jī)活塞式壓縮機(jī)膜片式壓縮機(jī)旋轉(zhuǎn)葉片式壓縮機(jī)最長(zhǎng)的使用壽命-

----低轉(zhuǎn)速(1460RPM),動(dòng)件少(軸承與滑片),潤(rùn)滑油在機(jī)件間形成保護(hù)膜,防止磨損及泄漏,使空壓機(jī)能夠安靜有效運(yùn)作;平時(shí)有按規(guī)定做例行保養(yǎng)的JAGUAR滑片式空壓機(jī),至今使用十萬小時(shí)以上,依然完好如初,按十萬小時(shí)相當(dāng)于每日以十小時(shí)運(yùn)作計(jì)算,可長(zhǎng)達(dá)33年之久。因此,將滑片式空壓機(jī)比喻為一部終身機(jī)器實(shí)不為過?;?葉)片式空壓機(jī)可以365天連續(xù)運(yùn)轉(zhuǎn)并保證60000小時(shí)以上安全運(yùn)轉(zhuǎn)的空氣壓縮機(jī)1.進(jìn)氣2.開始?jí)嚎s3.壓縮中4.排氣1.轉(zhuǎn)子及機(jī)殼間成為壓縮空間,當(dāng)轉(zhuǎn)子開始轉(zhuǎn)動(dòng)時(shí),空氣由機(jī)體進(jìn)氣端進(jìn)入。2.轉(zhuǎn)子轉(zhuǎn)動(dòng)使被吸入的空氣轉(zhuǎn)至機(jī)殼與轉(zhuǎn)子間氣密范圍,同時(shí)停止進(jìn)氣。3.轉(zhuǎn)子不斷轉(zhuǎn)動(dòng),氣密范圍變小,空氣被壓縮。4.被壓縮的空氣壓力升高達(dá)到額定的壓力后由排氣端排出進(jìn)入油氣分離器內(nèi)。4.被壓縮的空氣壓力升高達(dá)到額定的壓力后由排氣端排出進(jìn)入油氣分離器內(nèi)。1.進(jìn)氣2.開始?jí)嚎s3.壓縮中4.排氣1.凸凹轉(zhuǎn)子及機(jī)殼間成為壓縮空間,當(dāng)轉(zhuǎn)子開始轉(zhuǎn)動(dòng)時(shí),空氣由機(jī)體進(jìn)氣端進(jìn)入。2.轉(zhuǎn)子轉(zhuǎn)動(dòng)使被吸入的空氣轉(zhuǎn)至機(jī)殼與轉(zhuǎn)子間氣密范圍,同時(shí)停止進(jìn)氣。3.轉(zhuǎn)子不斷轉(zhuǎn)動(dòng),氣密范圍變小,空氣被壓縮。螺桿式氣體壓縮機(jī)是世界上最先進(jìn)、緊湊型、堅(jiān)實(shí)、運(yùn)行平穩(wěn),噪音低,是值得信賴的氣體壓縮機(jī)。螺桿式壓縮機(jī)氣路系統(tǒng):

A

進(jìn)氣過濾器

B

空氣進(jìn)氣閥

C

壓縮機(jī)主機(jī)

D

單向閥

E

空氣/油分離器

F

最小壓力閥

G

后冷卻器

H

帶自動(dòng)疏水器的水分離器油路系統(tǒng):

J

油箱

K

恒溫旁通閥

L

油冷卻器

M

油過濾器

N

回油閥

O

斷油閥冷凍系統(tǒng):

P

冷凍壓縮機(jī)

Q

冷凝器

R

熱交換器

S

旁通系統(tǒng)

T

空氣出口過濾器螺桿式壓縮機(jī)渦旋式壓縮機(jī)

渦旋式壓縮機(jī)是20世紀(jì)90年代末期開發(fā)并問世的高科技?jí)嚎s機(jī),由于結(jié)構(gòu)簡(jiǎn)單、零件少、效率高、可靠性好,尤其是其低噪聲、長(zhǎng)壽命等諸方面大大優(yōu)于其它型式的壓縮機(jī),已經(jīng)得到壓縮機(jī)行業(yè)的關(guān)注和公認(rèn)。被譽(yù)為“環(huán)保型壓縮機(jī)”。由于渦旋式壓縮機(jī)的獨(dú)特設(shè)計(jì),使其成為當(dāng)今世界最節(jié)能壓縮機(jī)。渦旋式壓縮機(jī)主要運(yùn)動(dòng)件渦卷付,只有磨合沒有磨損,因而壽命更長(zhǎng),被譽(yù)為免維修壓縮機(jī)。

由于渦旋式壓縮機(jī)運(yùn)行平穩(wěn)、振動(dòng)小、工作環(huán)境安靜,又被譽(yù)為“超靜壓縮機(jī)”。

渦旋式壓縮機(jī)零部件少,只有四個(gè)運(yùn)動(dòng)部件,壓縮機(jī)工作腔由相運(yùn)動(dòng)渦卷付形成多個(gè)相互封閉的鐮形工作腔,當(dāng)動(dòng)渦卷

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論