配置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);
}
完成
结束上述工作后,就可以调试成功了!