vs2010 MFC使用GDI+显示图片

配置GDI+

GDI+(Graphics Device Interface plus)是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口

这里为了更好的说明过程,假设我建立的MFC应用程序命名为Image

1.在建立好的MFC应用程序下,在头文件下找到Image.h,在CImageApp类中添加两个成员变量

GdiplusStartupInput    m_Gdistart; 
ULONG_PTR    m_GdiplusToken; 

2.找到源文件下的Image.cpp,在里面的InitInstance()函数中添加:

GdiplusStartup(&m_GdiplusToken,& m_Gdistart,NULL); 

3.在上一步的文件中找到ExitInstance()函数,添加:

GdiplusShutdown(m_GdiplusToken); 

4.在头文件 stdafx.h 中添加:

#include "gdiplus.h" 
using namespace Gdiplus; 

5.在“项目”->“属性”->“配置属性”->“链接器”
->“输入”->“附加依赖项”中添加: gdiplus.lib

添加文件对话框

1.Gdiplus::Bitmap类为我们提供了读取各类图像文件的接口,所以我们可以在ImageDoc.h中定义一个Bitmap的指针变量:

Bitmap* m_pCurBitmap;

2.在ImageDoc.cpp中找到构造函数和析构函数,在构造函数中插入:

m_pCurBitmap = NULL;

在析构函数中插入:

if(NULL != m_pCurBitmap)
    delete m_pCurBitmap;
m_pCurBitmap = NULL;

3.利用“项目”->“类向导”->“虚函数”->”OnDraw”,添加虚函数OnDraw,
接着将函数改为:

void CImageView::OnDraw(CDC* pDc)
{
    CImageDoc * pDoc = this->GetDocument();
    if(NULL == pDoc)
        return;
    if(NULL == pDoc->m_pCurBitmap)
        return;
    Graphics g(pDc->m_hDC);
    g.DrawImage(pDoc->m_pCurBitmap,0,0);
} 

4.在资源文件中找到Image.rc,打开Menu,找到 IDR_MAINFRAME,双击。添加一个按钮,例如叫“打开图像”。

5.右击“打开图像” -> “添加事件处理程序”,选择CImageDoc,点击确定后,会跳转到其函数,在其中添加如下代码:

TCHAR szFilter[] = _T("image(*.jpg)|*.jpg|所有文件(*.*)|*.*||");   
// 构造打开文件对话框   
CFileDialog FileDlg(TRUE, _T(""), NULL, 0, szFilter); 
CString strPathFile;   

// 显示打开文件对话框   
 if(IDOK==FileDlg.DoModal())  
{  
    strPathFile = FileDlg.GetPathName();  
    m_pCurBitmap = Bitmap::FromFile(strPathFile);
 }

完成

结束上述工作后,就可以调试成功了!

-------------本文结束感谢您的阅读-------------