BMP图像的选择与显示

本文介绍了一个简单的MFC对话框应用程序中加载并显示BMP图像的方法。通过CFileDialog对话框选择BMP文件,使用LoadImage函数读取图像并显示在静态控件上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void CMFCTestDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	CFileDialog file_open_dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,("BMP Files(*.bmp)|*.bmp|All Files(*.*)|*.*||"));
	file_open_dlg.m_ofn.lpstrTitle = "Open Noise Iamge File";
	if (file_open_dlg.DoModal() != IDOK)
		return;
	CStrNoisePath = file_open_dlg.GetPathName();
	UpdateData(FALSE);

	if (m_bmp.m_hObject!=NULL) //判断
		m_bmp.DeleteObject();
	//载入图片
	HBITMAP hbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),CStrNoisePath,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);

	if (hbmp == NULL)
	{
		MessageBox("请重新选择图片");
		exit(0);
	}
	m_bmp.Attach(hbmp);
	DIBSECTION ds;
	BITMAPINFOHEADER &bminfo = ds.dsBmih;
	m_bmp.GetObject(sizeof(ds),&ds);
	int cx = bminfo.biWidth;  //得到图像宽度
	int cy = bminfo.biHeight; //得到图像高度
	//得到了图像的宽度和高度后,对图像大小进行适应,即调整控件的大小,让它正好显示一张图片///////

	CRect rect;
	CStatic *pWnd = (CStatic*)GetDlgItem(IDC_imageShow);

	pWnd->ModifyStyle(0,SS_BITMAP|SS_CENTERIMAGE);
	pWnd->GetWindowRect(&rect);
	ScreenToClient(&rect);
	pWnd->MoveWindow(rect.left,rect.top,cx,cy,TRUE);
	
	pWnd->SetBitmap(hbmp);
	pWnd->RedrawWindow();
}
选择本地BMP图像,并将路径名保存至类成员变量CStrNoisePath中。通过LoadImage显示该图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值