(VC实现打开BMPJPG或GIF图片VCMFC打开图片.doc
文本预览下载声明
1、新建一个单文档的应用程序,项目名称为ShowBitmap
2、为CShowBitmapView类添加下述成员变量和成员函数:
//参数定义public:????int?state;????//位图显示状态???? CString BmpName;???//保存图像文件文件名???? CString extname;????//保存图像文件扩展名???? CBitmap m_bitmap;?//创建位图对象????void?ShowBitmap(CString BmpName);????//用来显示指定位图的函数???? BOOL ShowJpgGif(CDC*?pDC,CString strPath,?int?x,?int?y);
3、在CShowBitmap类的构造函数中,初始化成员变量state
//?CShowBitmapView 构造/析构CShowBitmapView::CShowBitmapView(){???? state=0;}
4、为ID_FILE_OPEN消息添加响应函数(具体怎么加就不细说了),编写该函数
//?CShowBitmapView 消息处理程序void?CShowBitmapView::OnFileOpen(){????//CFileDialog dlg(TRUE,_T(BMP),_T(*.BMP),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T(位图文件(*.BMP;*.jpg)|*.BMP;*.jpg|));?? //这行代码可以打开BMP格式的图片???? CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T(位图文件(*.BMP)|*.BMP|jpg文件(*.jpg)|*.jpg||));?//这行代码可以打开BMP和JPG格式的图片
//gif格式图片的打开在这就不列出来了,留给各位自己尝试吧,对于gif格式图片的显示图片函数和jpg格式图片是同一个函数。
?????if (IDOK==dlg.DoModal())?????{?????????state=0;??????????BmpName.Format(_T(%s),dlg.GetPathName());?????????extname = dlg.GetFileExt();???????????? //返回选定文件的扩展文件名?????????extname.MakeLower();?????????if (0==extname.Compare(_T(bmp)))?????????{?????????????ShowBitmap(BmpName);?????????}?????????else?????????{?????????????state=1;?????????}????????Invalidate();?????}}
5、编写BMP图片显示函数
void?CShowBitmapView::ShowBitmap(CString BmpName){????if?(state==0)???? {???????????????????? HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,BmpName,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);???????? m_bitmap.Detach();???????? m_bitmap.Attach(hBitmap);???????? state=1;???????? Invalidate();???? }}
6、编写jpg或gif格式图片显示程序
BOOL CShowBitmapView::ShowJpgGif(CDC*?pDC,CString strPath,?int?x,?int?y){???? IStream?*pStm;?????? CFileStatus fstatus;?????? CFile file;?????? LONG cb;??????//打开文件并检测文件的有效性????if?(file.Open(strPath,CFile::modeRead)???????? file.GetStatus(strPath,fstatus)????????? ((cb?=?fstatus.m_size)?!=?-1))?????? {?????????? HGLOBAL hGlobal?=?GlobalAlloc
显示全部