vc 加载bmp位图并显示的方法

简介: 方法一、显示位图文件 [cpp] view plaincopy   HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,_T(“xxx.bmp”),Image_Bitmap,0,0,Lr_CreateDibSection|Lr_DefaultSize|Lr_LoadFromFile);      //加载bmp文件   xxx.

方法一、显示位图文件

[cpp]  view plain copy
 
  1. HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,_T(“xxx.bmp”),Image_Bitmap,0,0,Lr_CreateDibSection|Lr_DefaultSize|Lr_LoadFromFile);  
  2.   
  3. //加载bmp文件   xxx.bmp 就是要加载的图片名字  
  4.   
  5. CBitmap bitmap; bitmap.Attach(hBitmap); //关联位图对象  
  6.   
  7. CDC dcimage;dcimage.CreateCompatibleDC(pDC); //内存  
  8.   
  9. DCBITMAP bmp;bitmap.GetBitmap(&bmp); //获取位图信息  
  10. dcimage.SelectObject(&bitmap); //选取位图对象  
  11.   
  12. pDC->BitBlt(0,0,bmp.bmWidth,bmp.bmHeight,&dcimage,0,0,SRCCOPY); //显示  


 

方法二、用文件打开对话框选取图片

你建立一个基于对话框的程序,在主对话框上加载一个 PictureBox,然后加载一个Button,添加点击Button事件。

具体代码如下:

 

CFileDialog dlg(TRUE,"bmp",".bmp",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"位图文件(*.BMP)|*.BMP||");

dlg.DoModal();

HBITMAP hBitmap;

 HDC hSrcDC;

 HDC hDesDC;

 CBitmap bmp;

CWnd *hwnd;

RECT rect;

BITMAP bm;

 hwnd = GetDlgItem(IDC_STATIC);

 hDesDC = hwnd->GetDC()->m_hDC;

hSrcDC = CreateCompatibleDC(hDesDC);

hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),dlg.GetPathName(),IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION); GetObject(hBitmap, sizeof BITMAP, &bm);

SelectObject(hSrcDC, hBitmap);

 hwnd->GetClientRect(&rect);

::SetStretchBltMode(hDesDC,COLORONCOLOR);

 ::StretchBlt(hDesDC, rect.left, rect.top, rect.right, rect.bottom, hSrcDC, 0, 0, bm.bmWidth, bm.bmHeight,SRCCOPY); 
  直接用mfc自带的static 图片控件显示bmp位图资源 方法1:
   1) 更改属性Picture Control属性 
   2) 直接关联上image: 设置Image属性
   3) 更改type为Bitmap 
   
   方法2:(PictureEx类网上搜)
   1)添加控件变量为PictureEx对象
   2) 直接m_pic1.LoadBitmap(IDB_BITMAP1); 
  示例:
   1. 关联 Picture Control 对象: m_stPicture
   2. 添加2个BMP资源 IDB_BITMAP1, IDB_BITMAP2
   3. 定义: HBITMAP m_hBitmap;
  4. 一开始显示图片
  

   BOOL CShowBmpDlg::OnInitDialog(){ 
   CDialog::OnInitDialog(); 
   ...... //显示图片 m_hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS); 
 m_stPicture.ModifyStyle(0xF, SS_BITMAP);
   m_stPicture.SetBitmap(m_hBitmap); 
   return TRUE;  // 除非设置了控件的焦点,否则返回 TRUE
  }

5. 切换图片
void CShowBmpDlg::OnBnClickedOk(){

 static int nId = 0;
 nId++; 
 if (NULL != m_hBitmap)
 {  
  ::DeleteObject(m_hBitmap);
  m_hBitmap = NULL;
 } int nPicId = nId = nId % 2 ? IDB_BITMAP2 : IDB_BITMAP1; 
 m_hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(nPicId), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS); 
 m_stPicture.ModifyStyle(0xF, SS_BITMAP);
 m_stPicture.SetBitmap(m_hBitmap);
}

目录
相关文章
VC中GDI+双缓冲实现Picture控件中显示png图片
VC中GDI+双缓冲实现Picture控件中显示png图片
226 0
VC2005中将Picture控件显示图片保存为BMP,JPG等格式
1.在stdafx.h头文件中加入   #include 2.保存图片   方法一:     HBITMAP hBitmap = NULL; //创建位图段 BITMAPINFO bmi; LPBYTE pBits; ZeroMemory(&bmi,sizeof(bmi)); //m...
997 0
|
存储 C++ Windows
浅析BMP位图文件结构(含Demo)
浅析BMP位图文件结构(含Demo) 作者:一点一滴的Beer http://beer.cnblogs.com/       关于BMP位图格式在网上可以找到比较详细的相关文档,有兴趣的可以搜索标题为“BMP文件结构的探索”的文章,可以在搜索结果中找到一个WORD文档,里面有很详细的介绍。
1042 0
|
API 分布式数据库 C++
VC下加载多种格式图片的方法总结IPicture, CxImage, CImage(AtlImage), CPictureEx
尽管VC有提供相应的API和类来操作bmp位图、图标和(增强)元文件,但却不支持jpg、gif和png等格式的图片,而这几种格式却是常常要用到的。这里我给大家介绍两种办法来操作这些格式的图片。 1.用API OleLoadPicture来加载JPG、GIF格式的图片(注:不支持PNG格式,另外GI...
1677 0
|
C++
CxImage动态加载图片(判断图片文件类型)
1、打开一张图可以通过创建一个新的CxImage对象来完成,通过构造函数来打开一张图CxImage::CxImage(const char * filename, DWORD imagetype)其中filename是需要打开的文件路径,imagetype是文件类型,支持的类型有: [c...
1627 0