MFC實(shí)現(xiàn)bmp圖片的打開(kāi)和保存

MFC實(shí)現(xiàn)bmp圖片的打開(kāi)和保存

ID:37581361

大?。?09.92 KB

頁(yè)數(shù):7頁(yè)

時(shí)間:2019-05-25

MFC實(shí)現(xiàn)bmp圖片的打開(kāi)和保存_第1頁(yè)
MFC實(shí)現(xiàn)bmp圖片的打開(kāi)和保存_第2頁(yè)
MFC實(shí)現(xiàn)bmp圖片的打開(kāi)和保存_第3頁(yè)
MFC實(shí)現(xiàn)bmp圖片的打開(kāi)和保存_第4頁(yè)
MFC實(shí)現(xiàn)bmp圖片的打開(kāi)和保存_第5頁(yè)
資源描述:

《MFC實(shí)現(xiàn)bmp圖片的打開(kāi)和保存》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)

1、鄭海波MFC編程總結(jié)2011‐10‐3北京打開(kāi)一幅圖片1.新建一個(gè)多文檔的MFC應(yīng)用程序.2.在_Doc.h文件的C_Doc類(lèi)中增加如下成員變量;public:intnumquad;//調(diào)色板數(shù)intflagOpen;//標(biāo)志是否打開(kāi)bmpBITMAPINFO*pbi;//記錄圖像細(xì)節(jié)BYTE*lpbuf;//圖像數(shù)據(jù)RGBQUAD*quad;//調(diào)色板BITMAPFILEHEADERbf;//文件頭BITMAPINFOHEADERbi;//信息頭3.修改”打開(kāi)”菜單項(xiàng)的響應(yīng)函數(shù);a.找到菜單資源b.在”打開(kāi)”菜單項(xiàng)建立類(lèi)向?qū)?,?yè)面設(shè)置

2、如下:選擇“Addfunction”,然后單擊“EditCode”第1頁(yè)鄭海波MFC編程總結(jié)2011‐10‐3北京編輯代碼如下:voidCZhbDoc::OnFileOpen(){//TODO:AddyourcommandhandlercodehereLPCTSTRlpszFilter="BMPFiles(*.bmp)

3、*.bmp

4、任何文件

5、*.*

6、

7、";CFileDialogdlg(TRUE,lpszFilter,NULL,OFN_HIDEREADONLY

8、OFN_OVERWRITEPROMPT,lpszFilter,NULL);CS

9、tringfilepath;CFilefile;//打開(kāi)文件對(duì)話框if(dlg.DoModal()==IDOK){filepath=dlg.GetPathName();if(file.Open(filepath,CFile::modeRead

10、CFile::shareDenyNone,NULL)==0){//讀取文件失敗AfxMessageBox("無(wú)法打開(kāi)文件!",MB_OK,0);return;}//讀取文件頭file.Read(&bf,sizeof(bf));//判斷是否是BMP文件if(bf.bfType!=0x4d42)//'

11、BM'{AfxMessageBox("非BMP文件!",MB_OK,0);return;}//判斷文件是否損壞if(file.GetLength()!=bf.bfSize){AfxMessageBox("文件已損壞,請(qǐng)檢查!",MB_OK,0);return;}//讀文件信息頭file.Read(&bi,sizeof(bi));//計(jì)算調(diào)色板數(shù)目numquad=0;if(bi.biBitCount<24){numquad=1<

12、i=(BITMAPINFO*)HeapAlloc(GetProcessHeap(),0,sizeof(BITMAPINFOHEADER)+numquad*sizeof(RGBQUAD));memcpy(pbi,&bi,sizeof(bi));quad=(RGBQUAD*)((BYTE*)pbi+sizeof(BITMAPINFOHEADER));//讀取調(diào)色板if(numquad!=0){file.Read(quad,sizeof(RGBQUAD)*numquad);}//為圖像數(shù)據(jù)申請(qǐng)空間bi.biSizeImage=bf.bfSiz

13、e‐bf.bfOffBits;lpbuf=(BYTE*)HeapAlloc(GetProcessHeap(),0,bi.biSizeImage);//讀取圖像數(shù)據(jù)file.Read(lpbuf,bi.biSizeImage);//圖像讀取完畢,關(guān)閉文件,設(shè)置標(biāo)志file.Close();flagOpen=1;}}4.在C_Veiw類(lèi)中增加paint消息處理函數(shù);a.如下圖:第3頁(yè)鄭海波MFC編程總結(jié)2011‐10‐3北京點(diǎn)擊“addhandler”,然后再點(diǎn)“editexisting”c.在處理函數(shù)里編寫(xiě)如下代碼:voidCZhbVie

14、w::OnPaint(){CPaintDCdc(this);//devicecontextforpainting//TODO:AddyourmessagehandlercodehereCZhbDoc*pDoc=GetDocument();//得到文檔指針,注意,文檔的命名是與工程名有關(guān)的!!不同的程序不一樣.ASSERT_VALID(pDoc);//是否已打開(kāi)某個(gè)BMP文件if(pDoc‐>flagOpen==1){//這個(gè)函數(shù)顯示DIBSetDIBitsToDevice(dc.m_hDC,//DIB將輸出的設(shè)備描述表0,//設(shè)備描述表

15、中位圖輸出起始邏輯x地址0,//設(shè)備描述表中位圖輸出起始邏輯x地址pDoc‐>bi.biWidth,//DIB的寬度pDoc‐>bi.biHeight,//DIB的高度0,//DIB開(kāi)始讀取輸出的像素?cái)?shù)據(jù)的

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。