在对话框中显示jpg图片

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();                 //调用显示图片函数


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值