資源描述:
《vc實現(xiàn)打開bmpjpg或gif圖片vcmfc打開圖片》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、1、新建一個單文檔的應(yīng)用程序,項目名稱為ShowBitmap2、為CShowBitmapView類添加下述成員變量和成員函數(shù)://參數(shù)定義public:????int?state;????//位圖顯示狀態(tài)????CStringBmpName;???//保存圖像文件文件名????CStringextname;????//保存圖像文件擴展名????CBitmapm_bitmap;?//創(chuàng)建位圖對象????void?ShowBitmap(CStringBmpName);????//用來顯示指定位圖的函數(shù)????BOOLS
2、howJpgGif(CDC*?pDC,CStringstrPath,?int?x,?int?y);3、在CShowBitmap類的構(gòu)造函數(shù)中,初始化成員變量state//?CShowBitmapView構(gòu)造/析構(gòu)CShowBitmapView::CShowBitmapView(){????state=0;}4、為ID_FILE_OPEN消息添加響應(yīng)函數(shù)(具體怎么加就不細說了),編寫該函數(shù)//?CShowBitmapView消息處理程序void?CShowBitmapView::OnFileOpen(){????//
3、CFileDialogdlg(TRUE,_T("BMP"),_T("*.BMP"),OFN_HIDEREADONLY
4、OFN_OVERWRITEPROMPT,_T("位圖文件(*.BMP;*.jpg)
5、*.BMP;*.jpg
6、"));??//這行代碼可以打開BMP格式的圖片????CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY
7、OFN_OVERWRITEPROMPT,_T("位圖文件(*.BMP)
8、*.BMP
9、jpg文件(*.jpg)
10、*.jpg
11、
12、"));?//這行代
13、碼可以打開BMP和JPG格式的圖片//gif格式圖片的打開在這就不列出來了,留給各位自己嘗試吧,對于gif格式圖片的顯示圖片函數(shù)和jpg格式圖片是同一個函數(shù)。?????if(IDOK==dlg.DoModal())?????{?????????state=0;??????????BmpName.Format(_T("%s"),dlg.GetPathName());?????????extname=dlg.GetFileExt();????????????//返回選定文件的擴展文件名?????????extname.
14、MakeLower();?????????if(0==extname.Compare(_T("bmp")))?????????{?????????????ShowBitmap(BmpName);?????????}?????????else?????????{?????????????state=1;?????????}????????Invalidate();?????}}5、編寫B(tài)MP圖片顯示函數(shù)void?CShowBitmapView::ShowBitmap(CStringBmpName){????if?(s
15、tate==0)????{????????????????????HBITMAPhBitmap=(HBITMAP)LoadImage(NULL,BmpName,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION
16、LR_DEFAULTSIZE
17、LR_LOADFROMFILE);????????m_bitmap.Detach();????????m_bitmap.Attach(hBitmap);????????state=1;????????Invalidate();????}}6、編寫jpg或g
18、if格式圖片顯示程序BOOLCShowBitmapView::ShowJpgGif(CDC*?pDC,CStringstrPath,?int?x,?int?y){????IStream?*pStm;??????CFileStatusfstatus;??????CFilefile;??????LONGcb;??????//打開文件并檢測文件的有效性????if?(file.Open(strPath,CFile::modeRead)&&????????file.GetStatus(strPath,fstatus)&&?
19、????????((cb?=?fstatus.m_size)?!=?-1))??????{??????????HGLOBALhGlobal?=?GlobalAlloc(GMEM_MOVEABLE,cb);??????????LPVOIDpvData?=?NULL;??????????if?(hGlobal?!=?NULL)??????????{???????