动态显示BMP位图

原创 2012年03月22日 21:42:13
截个图:

在函数中加入以下代码:

 

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); //将原有的句柄选入设备环境


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

MFC实现静态和动态显示bmp图片

代码下载路径:http://download.csdn.net/detail/dafenqie/9690529 1、通过LoadImage函数静态显示一个bmp文件: 1)增加一个pictur...

MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片

.        一.静态显示bmp图片              1.创建MFC基于对话框程序,添加一...

MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片

最近有同学问我如何实现MFC基于对话框在图片控件中加载图片?其实使用MFC显示图片的方法各种各样,但是还是有些同学不知道怎样显示.以前在《数字图像处理》课程中完成的软件都是基于单文档的程序,这里介绍两...

基于对话框显示,动态显示jpg.bmp等图片,并获取鼠标移动的坐标值及rgb值

基于对话框显示,动态显示jpg.bmp等图片,并获取鼠标移动的坐标值及rgb值

MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片

最近有同学问我如何实现MFC基于对话框在图片控件中加载图片?其实使用MFC显示图片的方法各种各样,但是还是有些同学不知道怎样显示.以前在《数字图像处理》课程中完成的软件都是基于单文档的程序,这里介绍两...

MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片

来源网站:http://blog.csdn.net/eastmount/article/details/26404733 最近有同学问我如何实现MFC基于对话框在图片控件中加载图片?其实使用MFC显...

MFC 动态加载bmp位图

// #include "stdafx.h" #include "mfc22.h" #include "mfc22Dlg.h" #ifdef _DEBUG #define new DEBUG_NE...

BMP位图的读取和显示

  • 2013-12-25 18:08
  • 1.75MB
  • 下载

【Tiny6410 And Linux】—(6.2)—LCD 驱动测试程序(BMP 显示位图)——原理

既然闲着也是没有事情做,干脆还是写点东西吧。   今天还是 LCD 驱动的一个测试程序,是为应用程序添加显示位图的功能,具体就是读取 BMP 图片,然后再开发板的屏幕上显示出来! 下面是有关 B...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)