码迷,mamicode.com
首页 > 编程语言 > 详细

MFC 在Picture控件中显示图像(JPG)

时间:2014-12-03 21:00:55      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   sp   on   div   问题   

首先选择图片:

void Chbgk_picDlg::OnBnClickedButton1()
{
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); //更新路径公共变量

Show_picture();   //调用显示图片函数
}
//显示图片函数
void Chbgk_picDlg::Show_picture()
{
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);
}

    通过上面两步的实现可以显示出jpg图片信息在Picture Control控件中,但是当窗口被最小化或者被其他应用程序覆盖后,这个时候图片不能显示,那么就需要对Picture Control中图片进行重绘,通过获得WM_PAINT消息进行处理,对响应OnPaint()函数进行处理:

 

void Chbgk_picDlg::OnPaint()
{ 
if (IsIconic())
{
   ..............
}
else
{   
   CDialog::OnPaint();     //重绘对话框
   CDialog::UpdateWindow(); //更新windows窗口,如果无这步调用,图片显示还会出现问题
   Show_picture();     //重绘图片函数
}
}

     需要注意的是首先绘制对话框,完成后更新窗口信息,然后进行绘制控件中图片区域。

到这里基本上一个图片选择显示的应用程序已经出来了,细节问题再细节处理。

转载自:http://hi.baidu.com/1235453434/item/7c6d1d9afec5c9dc1f4271ab

MFC 在Picture控件中显示图像(JPG)

标签:style   blog   http   color   使用   sp   on   div   问题   

原文地址:http://www.cnblogs.com/Qianqian-Dong/p/4141094.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!