资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
VCVC 实现打开实现打开 BMPBMP JPGJPG 或或 GIFGIF 图片图片|VC/MFC/|VC/MFC/打开图片打开图片 1、新建一个单文档的应用程序,项目名称为 ShowBitmap2、为 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_OVERWRITEPRO MPT,_T(“位图文件(*.BMP)|*.BMP|jpg 文件(*.jpg)|*.jpg|“); /这行代码可 以打开 BMP 和 JPG 格式的图片/gif 格式图片的打开在这就不列出来了,留给各位自己尝试吧,对于 gif 格式 图片的显示图片函数和 jpg 格式图片是同一个函数。if (IDOK=dlg.DoModal()state=0;BmpName.Format(_T(“%s“),dlg.GetPathName();ShowBitmap(BmpName);extname = dlg.GetFileExt(); /返回选定文件的扩展 文件名 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) LPVOID pvData = NULL; if (hGlobal != NULL) pvData = GlobalLock(hGlobal);if (pvData != NULL) /file.ReadHuge(pvData, cb); /6.0 中可能是用这个函数file.Read(pvData, cb); /VC2005.NET 中用这个函数GlobalUnlock(hGlobal); CreateStreamOnHGlobal(hGlobal, TRUE, elsereturn false; /打开文件结束/显示 JPEG 和 GIF 格式的图片,GIF 只能显示一帧,还不能显示动画,/要显示动画 GIF 请使用 ACTIVE 控件。IPicture *pPic; /load image from file streamif(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture ,(LPVOID*) OLE_YSIZE_HIMETRIC hmHeight; pPic-get_Width( pPic-get_Height( double fX,fY; /get image height and widthfX = (double)pDC-GetDeviceCaps(HORZRES)*(double)hmWidth/(d ouble)pDC-GetDeviceCaps(HORZSIZE)*100.0); fY = (double)pDC-GetDeviceCaps(VERTRES)*(double)hmHeight/( double)pDC-GetDeviceCaps(VERTSIZE)*100.0); /use render function display imageif(FAILED(pPic-Render(*pDC,x,y,(DWORD)fX,(DWORD)fY,0,hmHeigh t,hmWidth,-hmHeight,NULL) pPic-Release();return false;pPic-Release(); else return false; return true; 7、修改 OnDraw 函数,实现图片的显示 / CShowBitmapView 绘制void CShowBitmapView:OnDraw(CDC* pDC) CShowBitmapDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;if (state=1)if (0 = extname.Compare(_T(“bmp“)CDC dcImage;if (!dcImage.CreateCompatibleDC(pDC)return;BITMAP bm;m_bitmap.GetBitmap(dcImage.SelectObject(pDC-BitBlt(0,0,bm.bmWidth,bm.bmHeight,elseif (0 = extname.Compare(_T(“jpg“)ShowJpgGif(pDC,BmpName,1,1);
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号