VC++图片控件(Picture Control)显示资源位图(BMP)、文件位图(BMP)、其它格式文件图片(JPG\PNG\BMP)的方法

在VC++ MFC编程中,我们常使用Picture Control图片控件来显示图像。下面简单归纳几种显示不同的方式:

(实例可在我的CSDN资源中下载:http://download.csdn.net/detail/margin1988/8341525

第一种、资源位图方式显示BMP图片

如果要显示的是一张BMP位图,则可以采用资源位图方式,具体步骤如下:

(1)将BMP文件拷贝到工程的res目录下;

(2)在对话框中添加一个Picture Control控件,例如:ID为IDC_STATIC1,Type设为Bitmap;

(3)在工程的资源视图下,右键“添加资源”,现在资源类型Bitmap,然后“导入”(1)中的文件,例如:导入后资源的ID为IDB_BITMAP1;

(4)为IDC_STATIC1 Picture Control控件添加Control类型变量,例如:CStatic m_resbmp;

(5)在此控件上显示来自资源中的BMP位图IDB_BITMAP1,代码如下:

HBITMAP hBitmap;
// 显示资源中的图像(仅限位图BMP)
hBitmap =(HBITMAP)LoadImage(AfxGetInstanceHandle(),
		MAKEINTRESOURCE(IDB_BITMAP1),
		IMAGE_BITMAP,0,0,
		LR_LOADMAP3DCOLORS);
m_resbmp.SetBitmap(hBitmap);

第二种、文件位图方式显示BMP图片

如果要显示的是一张BMP位图,也可以采用文件位图的方式,具体步骤如下:

(1)将BMP文件拷贝到工程的可执行文件目录下(如:Debug目录,beixin.bmp文件);

(2)在程序中获取可执行文件目录的全路径,代码如下:

CString exepath;//exe路径
char filepath[256];
char *pPath;
GetModuleFileName(AfxGetInstanceHandle(),filepath,256);
pPath = strrchr(filepath,'\\');
*pPath = 0;
exepath = filepath;

(3)在对话框中添加一个Picture Control控件,例如:ID为IDC_STATIC2,Type设为Bitmap;

(4)为IDC_STATIC2 Picture Control控件添加Control类型变量,例如:CStatic m_filebmp;

(5)在此控件上显示来自文件的BMP位图beixin.bmp,代码如下:

// 显示文件中的图像(仅限位图BMP)
HBITMAP hBitmap;
CString filebmppath;
filebmppath.Format("%s\\beixin.bmp",exepath);//位图文件全路径
hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),_T(filebmppath),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
m_filebmp.SetBitmap(hBitmap);

第三种、文件图片方式显示JPG\PNG\BMP等图片

如果要显示的是一种JPG图片、PNG图片或者BMP图片(亦可)等其他格式的静态图片,则可使用文件图片的方式,步骤如下:

(1)将图片文件拷贝到工程的可执行文件目录下(如:Debug目录,shoutao.jpg\shoutao.png\shoutao.bmp文件);

(2)在程序中获取可执行文件目录的全路径,同上(第二种(2));

(3)在对话框中添加一个Picture Control控件,例如:ID为IDC_STATIC3,Type设为Frame;

(4)为IDC_STATIC3 Picture Control控件添加Control类型变量,例如:CStatic m_fileimg;

(5)在此控件上显示来自文件的JPG\PNG\BMP图片shoutao.jpg\shoutao.png\shoutao.bmp,代码如下:

//.h文件中
CFileFind finder;
void showimg(char* imgpath);//显示不同格式图片的函数
//.cpp文件中
void CPoint34Dlg::showimg(char* imgpath)
{
	// 显示文件中的图像(不限图像格式)
	if (finder.FindFile(imgpath))
	{
		CRect rect;
		m_fileimg.GetClientRect(&rect);
		CImage img;
		img.Load(imgpath);
		CDC* pDC = m_fileimg.GetWindowDC();
		img.Draw(pDC->GetSafeHdc(),rect);
		ReleaseDC(pDC);
	}
}


//.h文件中
CString fileimgpath;
//.cpp文件中,调用图片显示函数
srand((unsigned)time(NULL));
int rd = rand()%3;
switch (rd)
{
case 0:
	fileimgpath.Format("%s\\shoutao.bmp",exepath);
	break;
case 1:
	fileimgpath.Format("%s\\shoutao.png",exepath);
	break;
case 2:
	fileimgpath.Format("%s\\shoutao.jpg",exepath);
	break;
}
showimg(fileimgpath.GetBuffer());//调用

(6)这种在Picture Control控件中显示图片的方式,千万不要忘记在对话框的OnPaint()中添加窗口更新、重绘图像,否则,被对话框最小化或被遮挡后,图像不能正常显示,在OnPaint()中添加代码如下:

CDialog::OnPaint();
//对话框被最小化或被遮挡后,图像不能正常显示,需要更新、重绘窗口
UpdateWindow();
showimg(fileimgpath.GetBuffer());

效果图如下:

时间: 2024-08-26 04:10:10

VC++图片控件(Picture Control)显示资源位图(BMP)、文件位图(BMP)、其它格式文件图片(JPG\PNG\BMP)的方法的相关文章

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

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

VS2010-MFC(常用控件:图片控件Picture Control)

转自:http://www.jizhuomi.com/software/193.html 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了. 图片控件静态和动态加载图片 下面为大家演示如何为图片控件静态和动态加载位图图片. 1. 图片控件静态加载图片 1)

MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片

最近有同学问我如何实现MFC基于对话框在图片控件中加载图片?其实使用MFC显示图片的方法各种各样,但是还是有些同学不知道怎样显示.以前在<数字图像处理>课程中完成的软件都是基于单文档的程序,这里介绍两种在对话框picthre控件中显示BMP图片的最简单基础的方法. ~~方法可能并不完美,高手忽略,但是提供一种能运行的方法,希望对刚接触这方面知识的同学有所帮助.可能你觉得文章过于简单或者有些过于详细叙述(点到即可我并不反对),但也为哪些入门同学想想,当初自己也是一头雾水. 一.静态显示bmp图片

VC/MFC 当鼠标移到控件上时显示提示信息

VC/MFC 当鼠标移到控件上时显示提示信息 ToolTip是Win32中一个通用控件,MFC中为其生成了一个类CToolTipCtrl,总的说来其使用方法是较简单的,下面讲一下它的一般用法和高级用法. 一般用法步骤:  添加CToolTipCtrl成员变量 m_tt.  在父窗口中调用EnableToolTips(TRUE);  在窗口的OnCreate(或者其他适当的位置)中向ToolTip中添加需要显示Tip的子窗口,并同时指定相应的显示字串CToolTipCtrl::AddTool(pW

VC 透明滑动控件Slider Control

操作系统:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为滑动控件设置背景透明 经常在编写有背景的程序时,滑动控件Slider Control看起来与背景十分不合,我们可以从CSliderCtrl派生自己的类出来,以实现这个功能.下面是效果图: 所参考的资料来自:http://dev.yesky.com/179/2284679.shtml 派生类下载:http://download.csdn.net/source/1851812 使用时,添加滑动控件后,为其添加控件

MFC9.0 Outlook控件的标题显示无法修改

这是我在开发中遇到的问题,现记录下来,以便帮助你们. 不想看废话的可以只看最后三行,但你会错过很多. 俗话说的好啊,"Wise men learn by other men's mistakes; fools by their own." -------------------------------------------分割线首次登场--------------------------------------------- 可能有的童鞋英语不太好,看不懂上面的东东,好吧我活跃下气氛

GTK常用控件之图片控件( GtkImage )

图片控件和标签的作用很类似,都是作为显示用的,只是图片控件显示的内容是图片. 图片控件的创建: GtkWidget *gtk_image_new_from_file( const gchar *filename ); filename:图片的名字,带路径的话需要加上路径( 相对或绝对 ) 返回值:图片控件指针 通过上面方法创建的图片控件,以图片默认大小来显示,不能修改其大小.如果要改变图片的大小,我们要借助图片资源对象GdkPixbuf,需要注意的是,GdkPixbuf不属于控件类,它以 Gdk

(八)树控件(Tree Control),标签控件(tab control)

树控件 基于对话框创建工程 // 01_TreeCtrlDlg.cpp : 实现文件 // #include "stdafx.h" #include "01_TreeCtrl.h" #include "01_TreeCtrlDlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg

XE6 FMX之控件绘制与显示

FMX是一套UI类库,就相当于以前的VCL,但是相比VCL来说,支持了跨平台,同时也直接内部支持了各种特效动画甚至3D的效果,如果效率性能上来了,这个类库还是很有前景的.这次我主要学习的就是一个FMX窗体是如何绘制并显示出来的,相比较于VCL,有哪些不同之处,以及一个FMX程序的启动运转的最简单剖析.至于各种特效,动画,以及3D等,以后再慢慢的去啃食,贪多嚼不烂. 新建一个FireMonkey的HD Desktop Application,IDE会自动建立一个工程,进入工程,可以发现FMX的程序