MFC编程之图片空间

按照惯例,在这里直接先上图、
MFC编程之图片空间_第1张图片

图片控件介绍

所谓的图片空间,就是可以利用它插入图片显示,与静态文本控件有相似之处,都属于CStatic类。成员函数也一样。

那它是如何加载图片的呢?
加载图片可以分为静态加载和动态加载。

图片静态加载

1)创建一个基于对话框的MFC工程,名称设置为“PictureTest”。

2)准备一张Bitmap图片,名称设为“test.bmp”,放到工程的res文件夹中,res文件夹路径为…\Example27\Example27\res。在这里我使用了我司大恒公司的图片。

3)在Resource View中的“PictureTest.rc*”节点上点右键,选择“Add Resource…”,弹出“Add Resource”对话框:

MFC编程之图片空间_第2张图片

然后在右侧点击导入,选择工程目录下面的/res 里面的图片(test.bmp)。然后我们会发现在资源视图下面多有一个Bitmap,点开即可看到刚才导入的图片。

4.)在自动生成的对话框模板IDD_PictureTest_DIALOG中。添加一个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。

5)在图片控件的Image属性的下拉列表中选择3)中导入的位图IDB_BITMAP1。

6)编译运行程序,弹出结果对话框,如下图所示:
(在这里我们但看图片就好了,其他部分是上一章节做出来的,想了解的可以翻看我的博客)
MFC编程之图片空间_第3张图片

图片动态加载

以上讲的是静态加载图片的方法,下面接着讲动态加载图片的方法。程序依然沿用上面的工程。步骤如下:

1)将上面添加的图片控件的Image属性IDB_BITMAP1清空,Type属性不变。

2)修改图片控件的ID为IDC_JIZHUOMI_STATIC,然后为其添加CStatic类型控件变量m_jzmPicture。(若不修改ID则无法为其添加控件变量)

3)在对话框下方添加一按钮控件,Caption属性改为“加载图片”,ID设为IDC_LOAD_PIC_BUTTON。

4)为按钮IDC_LOAD_PIC_BUTTON添加点击消息的处理函数CExample27Dlg::OnBnClickedLoadPicButton(),然后修改此函数的函数实现如下:

/****************************************
*函 数 名:CListBoxTestDlg::OnBnClickedButton4()
*描    述: 当加载图片的时候会调用此函数
*输入参数:无
*输出参数:无
*作    者:shirunfa
******************************************/
void CListBoxTestDlg::OnBnClickedButton4()
{

    // TODO: Add your control notification handler code here   
    CBitmap bitmap;  // CBitmap对象,用于加载位图   
    HBITMAP hBmp;    // 保存CBitmap加载的位图的句柄   

    bitmap.LoadBitmap(IDB_BITMAP1);  // 将位图IDB_BITMAP1加载到bitmap   
    hBmp = (HBITMAP)bitmap.GetSafeHandle();  // 获取bitmap加载位图的句柄   
    m_jzmPicture.SetBitmap(hBmp);    // 设置图片控件m_jzmPicture的位图图片为IDB_BITMAP1   

}

5)效果如下:
MFC编程之图片空间_第4张图片
点击加载图片时,会显示如下:
MFC编程之图片空间_第5张图片

你可能感兴趣的:(MFC)