动态显示BMP位图
2012-03-22 21:42
453 查看
截个图:
在函数中加入以下代码:
在函数中加入以下代码:
CFileDialog FileDlg(TRUE, "BMP", NULL, //定义文件对话框 OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "位图文件(*.BMP)|*.BMP||"); if(FileDlg.DoModal() != IDOK) //打开文件对话框 return ; CString pathname = FileDlg.GetPathName();//获取选中文件的路径 CFile file; //定义一个文件变量 if(!file.Open(pathname, CFile::modeRead) )//以制度的方式打开文件 return ; DWORD FileLen = file.GetLength();//获取文件的长度 char *pBMPBuffer = new char[FileLen + 1];//开辟符数组 if(!pBMPBuffer) //如果控件不够大 return ; if(file.ReadHuge(pBMPBuffer,FileLen) != FileLen)//读取文件保存在字符数组中 return ; LPSTR hDIB,lpBuffer = pBMPBuffer; LPVOID lpDIBBits; BITMAPFILEHEADER bmfHeader;//保存bmp文件头的信息 DWORD bmfHeaderLen;//保存文件头的长度 bmfHeaderLen = sizeof(bmfHeader);//读取文件头的长度 strncpy((LPSTR)&bmfHeader,(LPSTR)lpBuffer,bmfHeaderLen);//文件的赋值 if (bmfHeader.bfType != (*(WORD*)"BM"))//如果文件类型不对 return ; hDIB = lpBuffer + bmfHeaderLen; //将指针移动到文件头的后面 BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)hDIB ;//读取bmp文件的数据 BITMAPINFO &bmInfo = *(LPBITMAPINFO)hDIB ; lpDIBBits=(lpBuffer)+((BITMAPFILEHEADER *)lpBuffer)->bfOffBits; CClientDC dc(this); m_hPhotoBitmap = CreateDIBitmap(dc.m_hDC,&bmiHeader,CBM_INIT,lpDIBBits,&bmInfo,DIB_RGB_COLORS); CStatic *pStaic = (CStatic*)GetDlgItem(IDC_PHOTO);//获取ID为IDC_PHOTO控件的指针 CPaintDC dc(this); // device context for painting CBitmap bmp; //定义位图变量 bmp.Attach(m_hPhotoBitmap); BITMAP bm; //定义一个位图结构 bmp.GetBitmap(&bm); CDC dcMem; dcMem.CreateCompatibleDC(GetDC()); //创建一个兼容的DC CBitmap *poldBitmap=(CBitmap*)dcMem.SelectObject(bmp); //将位图选入设备环境类 CRect lRect; //定义一个区域 pStaic->GetClientRect(&lRect); //获取控件的客户区域 lRect.NormalizeRect(); pStaic->GetDC()->StretchBlt(lRect.left ,lRect.top ,lRect.Width(),lRect.Height(), &dcMem,0 ,0,bm.bmWidth,bm.bmHeight,SRCCOPY); //显示位图 dcMem.SelectObject(&poldBitmap); //将原有的句柄选入设备环境
相关文章推荐
- 如何把位图读入内存中并显示?实现从打包文件中读取bmp文件并显示!
- 【Tiny6410 And Linux】—(6.2)—LCD 驱动测试程序(BMP 显示位图)——原理
- vc 加载bmp位图并显示的方法
- 【Tiny6410 And Linux】—(6.2)—LCD 驱动测试程序(BMP 显示位图)——代码
- MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片
- VC打开并缩放显示位图(.BMP)文件的方法
- 对话框中显示jpg,bmp图片和对话框动态显示图片
- SDL入门教程(三):2、显示一张BMP位图。
- VC用ADO存取显示jpg/bmp位图文件
- 绘画经验总结------ OnPaint()、BMP位图导入及显示
- 使用vc显示bmp位图
- gnu-ucos 增加 bmp 位图显示
- Matlab读取BMP位图并显示亮度值三维图
- MFC动态创建按钮,并在按钮上实现位图的切换显示
- vc 加载bmp位图并显示的方法
- mfc动态显示bmp
- 视频函数显示BMP位图
- vc中动态显示bmp
- MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片
- 窗体中显示BMP位图