MFC--picture control的用法


参考文章:MFC图像处理CImage类常用代码

一、通过资源ID的方式加载图片

图片资源文件为BMP,通过BMP资源ID获取bitmap

void CCTDlg::draw()
{	
	CBitmap bitmap;
	bitmap.LoadBitmapW(IDB_BITMAP1);
	CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO);
	pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);
	pStatic->SetBitmap((HBITMAP)bitmap);
}

二、通过文件路径的方式加载图片

bmp文件

通过bmp文件路径加载图片,loadImage()函数可改变图片大小。

void CCTDlg::draw()
{	
	HBITMAP bitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
		TEXT(".\\res\\1.bmp"), 
		IMAGE_BITMAP,
		600,
		200,
		LR_DEFAULTCOLOR | LR_LOADFROMFILE | LR_CREATEDIBSECTION);
	CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO);
	pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);
	pStatic->SetBitmap((HBITMAP)bitmap);
}

其他格式文件

其他格式的文件要先转换成bmp,也可用于bmp文件

void CCTDlg::draw()
{	
	CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO); // 得到 Picture Control 句柄   
	CImage image;
	image.Load(TEXT(".\\res\\yyl.png"));
	HBITMAP bitmap = image.Detach();
	pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);
	pStatic->SetBitmap(bitmap);
	image.Destory();
}

三、调整大小显示图片

根据MFC控件大小CImage类实例图片显示

void CCTDlg::draw()
{
	CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO);//得到控件
	CImage image;
	image.Load(TEXT(".\\res\\1.bmp"));  //加载图片
	CRect zcRect;   
	pStatic->GetClientRect(&zcRect);   //得到尺寸
	image.Draw(pStatic->GetDC()->m_hDC,
		zcRect.left,
		zcRect.top,
		zcRect.Width(),
		zcRect.Height()); 
	image.Destroy();
}

根据CImage类实例的大小调整MFC控件

void CCTDlg::draw()
{
	CImage image;
	image.Load(TEXT(".\\res\\2.jpg"));  //加载图片
	// 将整控件调整为与图像同一尺寸  
	CStatic* pStatic = (CStatic *)GetDlgItem(IDC_STATIC_PHOTO); 
	pStatic->SetWindowPos(NULL,
		0,
		0, 
		image.GetWidth(), 
		image.GetHeight(),
		SWP_NOMOVE);
	pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);
	pStatic->SetBitmap((HBITMAP)image.Detach());
}

四、清空图片

void CCTDlg::clear()
{
	CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO); // 得到 Picture Control 句柄   
	pStatic->SetBitmap(NULL);
	this->RedrawWindow();
}

五、释放空间

image.Destroy();   //释放CImage对象
pStatic->ReleaseDC(Dc);		//释放CDC、
posted @ 2021-06-08 23:39  CryCat  阅读(1055)  评论(0编辑  收藏  举报