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显示该图像。
BMP图像的选择与显示
最新推荐文章于 2020-05-19 11:02:42 发布