在对话框中显示jpg图片

来源:互联网 发布:安卓锁屏软件哪个好 编辑:程序博客网 时间:2024/04/26 20:10
1、添加一个Picture Control,关联变量为 m_picture,定义一个全局变量CString m_path.2、添加一个打开jpg图片的按钮,并添加按钮事件:void ...Dlg::OnOpen()。void ...Dlg::OnOpen(){CFileDialog cfd(true,_T(".jpg"),NULL,OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,_T("Executable   Files   (*.jpg)|*.jpg|All   Files   (*.*)|*.*||"),this);     //选项图片的约定 if(cfd.DoModal()!=IDOK)        //判断是否获得图片 {   return; } m_path = cfd.GetPathName();    //获得图片路径 UpdateData(false);             //更新路径公共变量 ShowPicture();                 //调用显示图片函数}3、添加函数void ...Dlg::ShowPicture(void)。void ...Dlg::ShowPicture(void){ if(m_path=="")        //判断图片路径是否存在 {  return; } //AfxMessageBox(_T("读取到图片路径")); CRect rect; m_picture.GetClientRect(&rect);     //m_picture为Picture Control控件变量,获得控件的区域对象 CImage image;       //使用图片类 image.Load(m_path);   //装载路径下图片信息到图片类 CDC* pDC = m_picture.GetWindowDC();    //获得显示控件的DC image.Draw( pDC -> m_hDC,rect);      //图片类的图片绘制Draw函数 ReleaseDC(pDC);}4、在void ...Dlg::OnPaint()添加:void ...Dlg::OnPaint(){ if (IsIconic()) {  .... } else {  CDialog::OnPaint();  CDialog::UpdateWindow(); //更新windows窗口  ShowPicture();     //重绘图片函数 }}

1.若出现CImage未定义,则包含进头文件:#include <atlimage.h>.

2.若出现:stdafx.obj : error LNK2005: "class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > m_path" (?m_path@@3V?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@A)

说明头文件中的变量定义可能出问题了。

我是在stdafx.h头文件中定义了:

CString m_path;    出错;

后将此定义放到我的.C文件中直接定义,编译通过。


3.清除JPG图片:

CStatic* pStatic= (CStatic*)GetDlgItem(IDC_STATIC1);

pStatic->SetBitmap(NULL);

我用:

m_picture.SetBitmap(NULL);UpdateData(false);             //更新路径公共变量ShowPicture();                 //调用显示图片函数


原创粉丝点击