MFC实现静态和动态显示bmp图片
2016-11-23 09:54
477 查看
代码下载路径:http://download.csdn.net/detail/dafenqie/9690529
1、通过LoadImage函数静态显示一个bmp文件:
1)增加一个pictureControl控件,修改ID为:IDC_STATIC_PICTURE
2)增加一个按钮,caption改为“静态显示图片”
3)双击按钮,生成按钮的点击响应函数,在函数中增加如下代码,其中文件名中根据实际情况填写文件路径。
void CtestPictureDlg::OnBnClickedButton2() { //获取对话框上图片控件的句柄 CStatic* pWnd = (CStatic*)GetDlgItem(IDC_STATIC_PICTURE); //设置静态控件窗口风格为位图居中显示 pWnd->ModifyStyle(0xf,SS_BITMAP|SS_CENTERIMAGE); //显示图片 pWnd->SetBitmap((HBITMAP)::LoadImage(NULL, _T("D:\\HELLO.BMP"), //资源号或本地文件名 IMAGE_BITMAP, //装载位图 IMAGE_CURSOR光标 IMAGE_ICON图标 0, //宽度 0为默认大小 0, //高度 像素为单位 LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE)); }
2、动态显示bmp文件,支持手工选择文件显示。
1)增加一个pictureControl控件,修改ID为:IDC_PICTURE
2)增加一个按钮,caption改为“动态显示图片”
3)双击按钮,生成按钮的点击响应函数,在函数中增加如下代码。
void CtestPictureDlg::OnBnClickedButton1() { //打开文件 定义四种格式的文件bmp gif jpg tiff CString filter; filter="所有文件(*.bmp,*.jpg,*.gif,*tiff)|*.bmp;*.jpg;*.gif;*.tiff| BMP(*.bmp)|*.bmp| JPG(*.jpg)|*.jpg| GIF(*.gif)|*.gif| TIFF(*.tiff)|*.tiff||"; CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter,NULL); //按下确定按钮 dlg.DoModal() 函数显示对话框 if( dlg.DoModal() == IDOK ) { //打开对话框获取图像信息 CString BmpName = dlg.GetPathName(); //获取文件路径名 如D:\pic\abc.bmp CString EntName = dlg.GetFileExt(); //获取文件扩展名 EntName.MakeLower(); //将文件扩展名转换为一个小写字符 if(EntName.Compare(_T("bmp")) == 0) { //定义变量存储图片信息 BITMAPINFO *pBmpInfo; //记录图像细节 BYTE *pBmpData; //图像数据 BITMAPFILEHEADER bmpHeader; //文件头 BITMAPINFOHEADER bmpInfo; //信息头 CFile bmpFile; //记录打开文件 //以只读的方式打开文件 读取bmp图片各部分 bmp文件头 信息 数据 if(!bmpFile.Open(BmpName, CFile::modeRead|CFile::typeBinary)) return; if (bmpFile.Read(&bmpHeader,sizeof(BITMAPFILEHEADER)) != sizeof(BITMAPFILEHEADER)) return; if (bmpFile.Read(&bmpInfo,sizeof(BITMAPINFOHEADER)) != sizeof(BITMAPINFOHEADER)) return; pBmpInfo = (BITMAPINFO *)new char[sizeof(BITMAPINFOHEADER)]; //为图像数据申请空间 memcpy(pBmpInfo,&bmpInfo,sizeof(BITMAPINFOHEADER)); DWORD dataBytes = bmpHeader.bfSize - bmpHeader.bfOffBits; pBmpData = (BYTE*)new char[dataBytes]; bmpFile.Read(pBmpData,dataBytes); bmpFile.Close(); //显示图像 CWnd *pWnd=GetDlgItem(IDC_PICTURE); //获得pictrue控件窗口的句柄 CRect rect; pWnd->GetClientRect(&rect); //获得pictrue控件所在的矩形区域 CDC *pDC=pWnd->GetDC(); //获得pictrue控件的DC pDC->SetStretchBltMode(COLORONCOLOR); StretchDIBits(pDC->GetSafeHdc(),0,0,rect.Width(),rect.Height(),0,0, bmpInfo.biWidth,bmpInfo.biHeight,pBmpData,pBmpInfo,DIB_RGB_COLORS,SRCCOPY); delete pBmpInfo; delete pBmpData; } } }
3、编译运行文件,点击“静态显示图片”和动态显示图片“选择“D:\\HELLO.BMP"文件,运行结果如图:
相关文章推荐
- MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片
- MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片
- MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片
- MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片
- MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片
- MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片
- MFC中显示图片(静态、动态)
- MFC 基于对话框的图片控件(picture)动态加载.bmp图片并显示
- MFC导入并显示BMP图片功能实现
- MFC导入并显示BMP图片功能实现
- MFC中显示图片(静态、动态)(转)
- MFC picture控件显示动态/静态BMP图片
- MFC中显示图片(静态、动态)(转)
- Java之简单的图片动态显示(实现类似GIF动画结果)
- opencv学习笔记(二)vs2010+opencv2.3.1 mfc的实现---利用图片控件显示
- Java之简单的图片动态显示(实现类似GIF动画效果)
- 用线程在Applet实现图片动态显示
- 在MFC中显示Jpg格式图片的简单实现方法
- MFC动态显示图片的方法
- 如何在MFC窗口显示BMP和JPG图片