首页 > 技术文章 > MFC-读取图像-Picture Control控件

jgg54335 2021-05-23 12:01 原文

在MFC上创建一个图片控件

image

可以根据右下角的控件属性对图片控件的样式进行修改

image

修改后的样式有没有好看一些 \(^_^\)

image

创建一个按钮控件用于读取图像

image

我们将Picture控件的ID

image

改为

image

下面是代码环节

先在头文件中加入下面三行代码

image

其中,下图.h是头文件 .cpp是源文件 .Dialog是GUI的界面
image

然后双击按钮控件 加入下面代码

//选择图片
	CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("image Files(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*||"), this);
	fileDlg.DoModal();
	//获取图片路径和图片名称
	strFilePath1 = fileDlg.GetPathName();
	strFileName1 = fileDlg.GetFileName();
	//判断路径不为空
	if (strFilePath1 == _T(""))
	{
		return;
	}
	image.Load(strFilePath1);
	//以下两个矩形主要作用是,获取对话框上面的Picture Control的width和height,
	//并设置到图片矩形rectPicture,根据图片矩形rectPicture对图片进行处理,
	//最后绘制图片到对话框上Picture Control上面
	CRect rectControl; //控件矩形对象
	CRect rectPicture; //图片矩形对象
	int x = image.GetWidth();
	int y = image.GetHeight();
	//Picture Control的ID为IDC_IMAGE
	CWnd* pWnd = GetDlgItem(IDC_STATIC_PIC);
	pWnd->GetClientRect(rectControl);
	CDC* pDc = GetDlgItem(IDC_STATIC_PIC)->GetDC();
	SetStretchBltMode(pDc->m_hDC, STRETCH_HALFTONE);
	rectPicture = CRect(rectControl.TopLeft(), CSize((int)rectControl.Width(), (int)rectControl.Height()));
	((CStatic*)GetDlgItem(IDC_STATIC_PIC))->SetBitmap(NULL);
	//以下两种方法都可绘制图片
	image.Draw(pDc->m_hDC, rectPicture); //将图片绘制到Picture控件表示的矩形区域
	image.Destroy();
	pWnd->ReleaseDC(pDc);

点击运行

image

选择“读取图片”按钮

image

随机选择一张图片 打开

image

便可以显示出来了!

推荐阅读