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 给按钮添加位图两种情况

1、给动态创建即调用Create()函数创建的按钮添加位图 第一步:调用Create函数创建,创建时设置按钮的样式,其中一项必须为BS_BITMAP   第二步:按钮变量与按钮ID相关联 DD...

按钮加载位图的几个方法 vc

一,只加载一张位图的方法: 1, 装入bmp资源,id为IDB_BMP,按钮的bitmap属性设为true,icon属性为false。 2, CButton *pBtn = ...

MFC模态与非模态加载位图

  • 2013年09月04日 14:55
  • 2.72MB
  • 下载

MFC 为按钮加载位图 CBitmapButton

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

MFC 动态加载bmp位图

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

MFC加载位图和图标

从文件加载位图 #pragma once // ZBitmap从文件加载位图资源 class ZBitmap { private: HBITMAP m_hBitmap; CString m_...

MFC的picture控件静态动态加载位图

所谓的静态有两种,一种是在picture属性中直接加载(type选择bitmap,image选择已加载到资源中的位图),另一种是通过编程加载,这两种的前提都要我们先把位图导入到资源中去,下面说下后一种...

MFC的picture控件静态动态加载位图

所谓的静态有两种,一种是在picture属性中直接加载(type选择bitmap,image选择已加载到资源中的位图),另一种是通过编程加载,这两种的前提都要我们先把位图导入到资源中去,下面说下后一种...

MFC加载图标,位图。LoadImage LoadIcon, LoadBitmap

MFC加载图标和位图,有2种方式,一种是从工程的资源中加载,一种是从文件加载。 先说图标的,图标格式为.ico,也就是我们常说的ICON图片。 我们直观的希望是加载ico使用LoadIcon()函...

MFC中利用picture control控件设置闪烁按钮。(控件以加载bitmap位图为例)

1. 从网上下载自己所需按钮图片,并转换为bmp格式(若选用图标,则转换为ico格式),将图片放在项目的res文件夹下。再将两个图标导入到资源视图中(资源视图下的Bitmap上点击(若bitmap,则...
  • wf6892
  • wf6892
  • 2016年09月04日 17:58
  • 941
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC学习日记-加载位图
举报原因:
原因补充:

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