关闭

MFC学习日记-加载位图

222人阅读 评论(0) 收藏 举报
分类:

一、位图简介        

位图是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----------------------------------------------------------------------
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:54843次
    • 积分:1003
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:64篇
    • 译文:0篇
    • 评论:27条
    最新评论