下面就介绍下首次接触Gdiplus的一个简单应用。
一、包括相应的头文件及引入相应的lib
- #include <GdiPlus.h>
- //#include <AtlImage.h> //此头文件里面包括#pragma comment(lib, "gdiplus.lib")
- #pragma comment(lib, "gdiplus.lib")
- using namespace Gdiplus;
二、初始化Gdiplus
- Gdiplus::GdiplusStartupInput m_gdiplusStartupInput;
- ULONG_PTR m_gdiplusToken;
- GdiplusStartup( &m_gdiplusToken, &m_gdiplusStartupInput, NULL );
- Image* m_pImage; //图片对象
- m_pImage=Image::FromFile(_T("Test03.jpg"));
- //错误判断
- if ((m_pImage==NULL)||(m_pImage->GetLastStatus()!=Ok))
- {
- if ( m_pImage )
- {
- delete m_pImage;
- m_pImage = NULL;
- }
- return FALSE;
- }
四、绘制图片
- Graphics graphics( GetDC()->GetSafeHdc() );
- graphics.DrawImage(m_pImage, 0,0,m_pImage->GetWidth(),m_pImage->GetWidth());
五、关闭Gdiplus
- GdiplusShutdown( m_gdiplusToken );
以下是显示一个jpg格式的例子(基于对话框的一个程序)
一、主要代码
- //变量声明
- Gdiplus::GdiplusStartupInput m_gdiplusStartupInput;
- ULONG_PTR m_gdiplusToken;
- Image* m_pImage; //图片对象
- //初始化
- BOOL Cmfc12_30Dlg::OnInitDialog()
- {
- // TODO: 在此添加额外的初始化代码
- //初始化GDI+.
- GdiplusStartup( &m_gdiplusToken, &m_gdiplusStartupInput, NULL );
- //加载文件
- //CT2CW strFileName( _T("I:\\编程练习\\CommonFiles\\Test02.png") );
- //m_pImage = new Image( _T("I:\\编程练习\\CommonFiles\\Test02.png") );
- //m_pImage=Image::FromFile(_T("I:\\编程练习\\CommonFiles\\Test02.png"));
- m_pImage=Image::FromFile(_T("I:\\编程练习\\CommonFiles\\Test03.jpg"));
- //错误判断
- if ((m_pImage==NULL)||(m_pImage->GetLastStatus()!=Ok))
- {
- if ( m_pImage )
- {
- delete m_pImage;
- m_pImage = NULL;
- }
- return FALSE;
- }
- MoveWindow( 0, 0, 1024, 768 );
- //设置按钮位置
- CWnd* pBtn = GetDlgItem( IDOK );
- if ( pBtn )
- {
- pBtn->MoveWindow( 1024-160, 700, 60, 30 );
- }
- pBtn = GetDlgItem( IDCANCEL );
- if( pBtn )
- {
- pBtn->MoveWindow( 1024-80, 700, 60, 30 );
- }
- CenterWindow();
- return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
- }
- //绘制
- void Cmfc12_30Dlg::OnPaint()
- {
- //GetDC()->PatBlt( 0, 0, 500, 500, BLACKNESS );
- //PatBlt( GetDC()->GetSafeHdc(), 0, 0, 500, 500, BLACKNESS );
- Graphics graphics( GetDC()->GetSafeHdc() );
- graphics.DrawImage(m_pImage, 0,0,m_pImage->GetWidth(),m_pImage->GetWidth());
- }
- //关闭
- void Cmfc12_30Dlg::OnDestroy()
- {
- CDialog::OnDestroy();
- // TODO: 在此处添加消息处理程序代码
- if( m_pImage )
- {
- try
- {
- delete m_pImage;
- }
- catch (...)
- {
- }
- m_pImage = NULL;
- }
- GdiplusShutdown( m_gdiplusToken );
- }
二、运行界面