【MFC】picture控件 两种有细微差别的动态加载图片方法

摘自:http://www.jizhuomi.com/software/193.html

VS2010/MFC编程入门之二十七(常用控件:图片控件Picture Control)

分类标签: 编程入门  VS2010  VC++  MFC

上一节中鸡啄米讲的是滚动条控件,本节主要讲一种简单实用的控件,图片控件Picture Control。我们可以在界面某个位置放入图片控件,显示图片以美化界面。

图片控件简介

图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了。

图片控件静态和动态加载图片

鸡啄米下面为大家演示如何为图片控件静态和动态加载位图图片。

1. 图片控件静态加载图片

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

2)准备一张Bitmap图片,名称设为“test.bmp”,放到工程的res文件夹中,res文件夹路径为...\Example27\Example27\res。鸡啄米在这里用的是一张鸡啄米网站的截图。

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

然后在左侧的“Resource Type”中选择“Bitmap”,点按钮“Import”,显示一个文件对话框,我们选择res文件夹中的test.bmp图片文件,导入成功后会在Resource View的Example27.rc*节点下出现一个新的子节点“Bitmap”,而在“Bitmap”节点下可以看到刚添加的位图资源IDB_BITMAP1,这里的默认ID就不修改了。

4.)在自动生成的对话框模板IDD_EXAMPLE27_DIALOG中,删除“TODO: Place dialog controls here.”静态文本控件、“OK”按钮和“Cancel”按钮。添加一个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)编译运行程序,弹出结果对话框,如下图所示:

2. 图片控件动态加载图片

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

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(),然后修改此函数的函数实现如下:

C++代码

  1. void CExample27Dlg::OnBnClickedLoadPicButton()
  2. {
  3. // TODO: Add your control notification handler code here
  4. CBitmap bitmap;  // CBitmap对象,用于加载位图
  5. HBITMAP hBmp;    // 保存CBitmap加载的位图的句柄
  6. bitmap.LoadBitmap(IDB_BITMAP1);  // 将位图IDB_BITMAP1加载到bitmap
  7. hBmp = (HBITMAP)bitmap.GetSafeHandle();  // 获取bitmap加载位图的句柄
  8. m_jzmPicture.SetBitmap(hBmp);    // 设置图片控件m_jzmPicture的位图图片为IDB_BITMAP1
  9. }

5)编译运行程序,弹出结果对话框,点击按钮“加载图片”,结果如下:

图片控件Picture Control的内容就讲到这里了。应该说还是比较简单的。最后,鸡啄米在此对一直以来关注本站的老朋友以及刚来的新朋友表示感谢。

摘自:http://blog.csdn.net/g5dsk/article/details/6854790

MFC 的 Picture Control 加载 BMP/PNG 图片的方法

分类: C/C++ Windows2011-10-09 10:56 19988人阅读 评论(4) 收藏 举报

mfcimagenullc

1. 加载 BMP

[cpp] view plaincopyprint?

  1. CStatic* pWnd = (CStatic*)GetDlgItem(IDC_PIC); // 得到 Picture Control 句柄
  2. pWnd->ModifyStyle(0, SS_BITMAP); // 修改它的属性为位图
  3. pWnd->SetBitmap((HBITMAP)::LoadImage(NULL, _T("bmp.bmp"),
  4. IMAGE_BITMAP,
  5. 100,
  6. 50,
  7. LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE));

2. 加载 PNG

[cpp] view plaincopyprint?

  1. CStatic* pWnd = (CStatic*)GetDlgItem(IDC_PIC); // 得到 Picture Control 句柄
  2. CImage image;
  3. image.Load(_T("png.png");
  4. HBITMAP hBmp = image.Detach();
  5. pWnd->SetBitmap(hBmp);
  6. pWnd->SetWindowPos(NULL,
  7. 0,
  8. 0,
  9. 100,
  10. 50,
  11. SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER);

3. 在资源编辑器中选定图片控件 -> Alt+Enter 打开该图片控件的“属性窗口” -> 在 "Type" 中选定图片类型 -> 在"Image"中选定图片对应的资源 ID.

时间: 2024-10-27 07:43:32

【MFC】picture控件 两种有细微差别的动态加载图片方法的相关文章

iOS学习之UISwitch控件两种使用方法和监听

一.第一种创建UISwitch控件的方法,在代码中动态创建. 1.打开Xcode  4.3.2, 新建项目Switch,选择Single View Application. 2.打开ViewController.m文件在viewDidLoad方法里添加代码: - (void)viewDidLoad{ [super viewDidLoad]; UISwitch *switchButton = [[UISwitch alloc] initWithFrame:CGRectMake(50, 100, 2

MFC Picture控件加载图片

CStatic *pPic = (CStatic*)GetDlgItem(IDC_PICTURE); CBitmap bitmap; bitmap.LoadBitmapW(IDB_BITMAP2); pPic->SetBitmap((HBITMAP)bitmap.GetSafeHandle());//在Picture的Type调为Bitmap 像素修改: CStatic *pPic = (CStatic*)GetDlgItem(IDC_PICTURE); CBitmap bitmap; bitm

DataGridView控件判断滚动条是否滚动到当前已加载的数据行底部

private void dgvLoad_Scroll(object sender, ScrollEventArgs e) { if (e.ScrollOrientation == ScrollOrientation.VerticalScroll) { if (e.NewValue + dgvLoad.DisplayedRowCount(false) == dgvLoad.Rows.Count) { MsgShow.Warning(string.Format("NewValue:{0}--Old

Android开发之一种简单的异步加载图片方法

首先说明的是,该方法已经被我抛弃了.之前用它,发现加载速度不好.具体没怎么细心的看. 现在我用volley了.拿出来只是给大家批判的. package com.souya.seller.util.ex; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.lang.ref.SoftReference; import java.util.HashMap; impor

VS2010/MFC常用控件:图片控件Picture Control

图片控件Picture Control 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了. 图片控件静态和动态加载图片 鸡啄米下面为大家演示如何为图片控件静态和动态加载位图图片. 1. 图片控件静态加载图片 1)创建一个基于对话框的MFC工程,名称设置为“

MFC基础控件

一.静态文本 在代码中动态创建,需要使用CStatic类的成员函数Create virtual BOOL Create(    LPCTSTR lpszText,    DWORD dwStyle,    const RECT& rect,    CWnd* pParentWnd,    UINT nID = 0xffff  ); lpszText:指定要在控件中显示的文字.如果为NULL则不会显示任何文字. dwStyle:指定静态控件的风格.静态文本框一般都是对话框或其他窗口的子窗口,而且是

另类的动态加载用户控件

最新更新:原本在看到此方案的时候觉的想到这方案的朋友特别高深,后来本人把本文写出来想和大家分享下,才知道这个就是Dottext方案中的一个模块而已.真是汗啊,嫌自己见识太浅.既然写了就当复习了一次Dottext..这还是我第一次听说Dottext.     在BS架构这块,我们平时建一个网站,通常是创建一个WebSite网站,或者是创建一个WebApplication.然后在WEB项目里面建立相应的aspx文件,以及用户控件,自定义控件等等.但是做为一个新加入此项目的你要去修改里面的某一个功能模

OpenCV获取摄像头视频并在MFC的Picture控件上显示

分为两步:OpenCV获取摄像头数据+图像在Picture上显示 第一步:OpenCV获取摄像头数据 参考:http://www.cnblogs.com/epirus/archive/2012/06/04/2535190.html http://blog.sina.com.cn/s/blog_6dbe9bdb0100nii7.html http://blog.csdn.net/augusdi/article/details/8762961 #include "stdafx.h" #in

MFC 刷新失效的Picture控件

问题描述:如在摄像头显示时,关闭摄像头,此时Picture控件仍然显示最后一帧图像,需要刷新掉,还原Picture控件.或者重复显示两张不同大小的图片时,第二张背景有第一张图片残留. 解决方法1:(最笨的方法) 用对话框背景色来填充控件, CRect rect; GetDlgItem(IDC_ShowImage)->GetClientRect(&rect); GetDlgItem(IDC_ShowImage)->GetDC()->FillSolidRect(&rect2,