MFC学习日记-加载位图

原创 2016年08月31日 15:52:28

一、位图简介        

位图是MFC中的添加在程序中的图片,后缀名为.bmp。程序开发时,一般将位图放在程序的res文件下方便查找。


向工程中添加位图文件一般先在资源视图中BitMap文件夹中加载位图。

加载完成后可以从工具箱中添加一个加一个Picture Control控件,在图片控件的属性页中有一个Type属性,Type属性下拉列表中有8种类型,下面分别介绍下:

       Frame:显示一个无填充的矩形框,边框颜色可以通过Color属性的下拉列表设定

       Etched Horz:显示一条横分割线

       Etched Vert:显示一条竖分割线

       Rectangle:显示一个填充的矩形框,矩形颜色可通过Color属性的下拉列表设定

       Icon:显示一个图标(Icon),图标通过Image 下拉列表来设置图标资源ID

       Bitmap:显示一个位图(Bitmap),位图通过Image 下拉列表来设置位图资源ID

       Enhanced Metafile:显示一个加强的元数据文件(Metafile)

       Owner Draw:自绘

       因为我们要加载的是位图图片,所以Type属性选择Bitmap。

二、位图加载

         位图加载有静态和动态两种方式,静态加载时在程序设计时直接添加一个位图文件在程序中。方式如下:

图片控件的Image属性的下拉列表中选择3)中导入的位图IDB_BITMAP1。即可。大笑

  动态加载位图是指通过设置一个按钮或者触发其他的消息来动态的添加一个位图。方式如下:

首先,跟静态位图加载相同添加一个Picture Control控件。将Type属性设为BitMAp。

然后,给控件添加一个CStatic类型的变量。

接着,添加一个按钮控件来触发加载位图的消息。

最后,在按钮消息响应函数中添加位图加载代码。代码如下:

  1.  CBitmap bitmap;  // CBitmap对象,用于加载位图   
  2.     HBITMAP hBmp;    // 保存CBitmap加载的位图的句柄   
  3.   
  4.     bitmap.LoadBitmap(IDB_BITMAP1);  // 将位图IDB_BITMAP1加载到bitmap  
  5.     hBmp = (HBITMAP)bitmap.GetSafeHandle();  // 获取bitmap加载位图的句柄   
  6.     m_jzmPicture.SetBitmap(hBmp);    // 设置图片控件m_jzmPicture的位图图片为IDB_BITMAP1   


三、添加背景图片

      程序背景图片的添加需要响应WM_ERASEBKGUD 消息处理函数,在响应函数中添加如下代码:

  1.  CBitmap bitmap;  
  2.     bitmap.LoadBitmapA(IDB_BITMAP1);  
  3.     BITMAP bmp;  
  4.     bitmap.GetBitmap(&bmp);  
  5.     CDC dccompatible;  
  6.     dccompatible.CreateCompatibleDC(pDC);  
  7.     dccompatible.SelectObject(&bitmap);  
  8.     CRect rect;  
  9.     GetClientRect(&rect);  
  10.     pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dccompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);  
  11.     return true;  
  12.     //return CView::OnEraseBkgnd(pDC);  


最后需要注释掉:
  1. return CView::OnEraseBkgnd(pDC);  

否则无法加载位图,因为该函数是擦出背景的。:如果它擦除了背景,则返回非零值;否则返回0。代码中具体的含义我也不太懂,慢慢学习吧。
--------------------------------------------------------------------------end----------------------------------------------------------------------
版权声明:本文为博主原创文章,未经博主允许不得转载。

MFC加载位图资源的实现

MFC加载位图资源的实现 1、添加OnEraseBkgnd函数 该方法是在指定位置加载位图 BOOL CbitmapDlg::OnEraseBkgnd(CDC* pDC) {     // ...
  • life061522
  • life061522
  • 2015年07月27日 11:58
  • 2031

MFC基于对话框的位图加载

最近学VC++,遂写了简单的应用如文章标题,其实这个应用很常见。          步骤1. 位图加载。通过位图的导入添加自己的位图,注意要是bmp格式。          步骤2.创建一个Com...
  • chuanchuan608
  • chuanchuan608
  • 2012年07月02日 13:44
  • 5977

MFC 加载位图

Windows的位图有两种类型:一种是GDI位图,另一种是DIB位图。GDI位图是由MFC中的CBitmap类来表示的,是与设备有关的位图。DIB是与设备无关的位图,它自带颜色,并任何运行Window...
  • shufac
  • shufac
  • 2014年03月13日 00:15
  • 924

MFC中加载位图资源到窗口中

一、 从磁盘中加载位图到窗口中---操作步骤 1. 创建一个单文档的应用程序,工程名为LoadBmp。 2. 在视图类中添加一个成员变量m_hBmp. 3. 在视图类的构造函数中调用LoadImage...
  • ziyuzhao123
  • ziyuzhao123
  • 2013年09月26日 16:10
  • 3064

MFC加载位图和图标

从文件加载位图 #pragma once // ZBitmap从文件加载位图资源 class ZBitmap { private: HBITMAP m_hBitmap; CString m_...
  • x82488059
  • x82488059
  • 2013年07月12日 14:57
  • 768

MFC中怎样将位图写入指定的Picture控件中,两种方式:1 加载已有位图 2读取位图文件;另外CreateDIBitmap的用法和StretchDIBits用法举例

注意着两种方式都要事先在对话框中拖picture控件,将其ID改为:IDC_PHOTO 看这篇文章之前建议先看一下下面这篇文章: VC下显示位图的几种方法     http://blo...
  • zhangyulin54321
  • zhangyulin54321
  • 2012年10月23日 14:51
  • 5614

mfc 显示位图 与 双缓冲

从资源中加载是:    CBitmap bmp;    bmp.LoadBitmap(IDB_BITMAP1)从文件中加载是,注意加载的是位图即bmp文件。    CBitmap bitmap;   ...
  • mzwang123
  • mzwang123
  • 2009年12月22日 11:59
  • 4779

MFC 为按钮加载位图 CBitmapButton

系统环境:Windows 7 软件环境:Visual C++ 2008 SP1 本次目的:使用位图按钮,并且设置按钮的鼠标悬停效果       在用MFC开发时,界面是比较不好开发的一块。V...
  • u013050589
  • u013050589
  • 2014年05月29日 09:35
  • 1866

在MFC里添加位图

1,新建MFC工程,名为BitmapDlg后再资源视图里添加一个位图资源控件(我添加过.PNG的图)设ID为IDB_BITMAP1; 2.在BitmapDlg.Dlg里的Onpaint()里添加如下...
  • pudongdong
  • pudongdong
  • 2016年11月05日 22:44
  • 240

MFC 给按钮添加位图两种情况

1、给动态创建即调用Create()函数创建的按钮添加位图 第一步:调用Create函数创建,创建时设置按钮的样式,其中一项必须为BS_BITMAP   第二步:按钮变量与按钮ID相关联 DD...
  • a379215666
  • a379215666
  • 2013年09月17日 14:10
  • 884
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC学习日记-加载位图
举报原因:
原因补充:

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