码迷,mamicode.com
首页 > 其他好文 > 详细

用CImage类来显示PNG、JPG等图片

时间:2015-08-19 16:12:54      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

 CImage 是VC.NET中定义的一种MFC/ATL共享类,也是ATL的一种工具类,它提供增强型的(DDB和DIB)位图支持,可以装入、显示、转换和保存多种格式的图像文件,包括BMP、GIF、JPG、PNG、TIF等。CImage是一个独立的类,没有基类。(CImage类是基于GDI+的,从VC.NET起引进,VC 6.0中没有。)
ATL (Active Template Library,活动模板库)是一套基于模板的 C++ 类,用以简化小而快的 COM 对象的编写。
为了在MFC程序中使用CImage类,必须包含ATL的图像头文件atlimage.h:(在VS08 SP1中不用包含)

#include <atlimage.h>

这是一个强大的图像处理类,下面分别详细介绍在文档、对话框下的显示图片。

对于单文档程序: 
步骤一:添加头文件(由于我使用的是VS2008SP1,所以我未添加上面的头文件。)
步骤二:在Doc头文件里面声明对象,如:CImage img ;
步骤三:在Doc实现函数里面的序列化Serialize函数

void CImagePNGDoc::Serialize(CArchive& ar)
{
    if (ar.IsStoring())
    {
        // TODO: 在此添加存储代码
    }
    else
    {
        // TODO: 在此添加加载代码
        if(!img.IsNull()) img.Destroy();
        img.Load(ar.GetFile()->GetFilePath()); 
    }
}

步骤四:在视图View的实现文件OnDraw()里面

void CImagePNGView::OnDraw(CDC* pDC )
{
    CImagePNGDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;

    // TODO: 在此处为本机数据添加绘制代码    
    if(!pDoc->img.IsNull()) pDoc->img.Draw(pDC->m_hDC, 0, 0); 
}

完成,以上可以显示大多数的图片格式。

 

对于对话框程序: 
步骤一:在对话框的头文件声明一个对象,如:CImage img ;

步骤二:dlg上添加一个Picture Control,Type设置为Rectangle

步骤三:在对话框的实现函数OnPaint()函数里面(使用类向导重载OnPaint)

技术分享
 1 void CDrawPictureDlg::OnPaint()
 2 {
 3     CPaintDC dc(this); // device context for painting
 4     CDialog::OnPaint();        
 5     CDialog::UpdateWindow();// 更新windows窗口,如果无这步调用,图片显示还会出现问题
 6 
 7     CImage img;
 8     if(!img.IsNull()) img.Destroy();
 9     img.Load(_T("E:\\visual studio 2010\\Projects\\LoadDllDemo\\img\\skin\\111.jpg"));             
10     if(!img.IsNull())
11     {
12         CRect rect;
13         CDC *pDC = GetDlgItem(IDC_STATIC_PIC)->GetDC();
14         HDC hDC= pDC->GetSafeHdc();
15         GetDlgItem(IDC_STATIC_PIC)->GetClientRect(&rect);
16         img.Draw(dc.m_hDC, 0, 0);//直接在对话框上绘制图片
17         //img.Draw(hDC, 0, 0);//在PictureControl上绘制图片
18         ReleaseDC(pDC);
19     }
20 }
View Code

 

用CImage类来显示PNG、JPG等图片

标签:

原文地址:http://www.cnblogs.com/lpxblog/p/4742492.html

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