资源描述:
《vc实现打开bmpjpg或gif图片vcmfc打开图片》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、1、新建一个单文档的应用程序,项目名称为ShowBitmap2、为CShowBitmapView类添加下述成员变量和成员函数://参数定义public: int state; //位图显示状态 CStringBmpName; //保存图像文件文件名 CStringextname; //保存图像文件扩展名 CBitmapm_bitmap; //创建位图对象 void ShowBitmap(CStringBmpName); //用来显示指定位图的函数 BOOLS
2、howJpgGif(CDC* pDC,CStringstrPath, int x, int y);3、在CShowBitmap类的构造函数中,初始化成员变量state// CShowBitmapView构造/析构CShowBitmapView::CShowBitmapView(){ state=0;}4、为ID_FILE_OPEN消息添加响应函数(具体怎么加就不细说了),编写该函数// 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格式图片的显示图片函数和jpg格式图片是同一个函数。 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、编写BMP图片显示函数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) {