天天看點

在vc中使用GDI+的方法

轉載自https://www.cnblogs.com/hpcpp/p/6170518.html

1.載解壓GDI+開發包;

2.正确設定include & lib 目錄;

設定如下:VC6.0編譯器菜單Tools->Options->Directories中添加inlude files和Library files對應的檔案夾(前提是你下載下傳了GDI+的開發包,放到對應的檔案夾中)

在vc中使用GDI+的方法
在vc中使用GDI+的方法

3.在stdafx.h中添加:

#define ULONG_PTR ULONG
#include <gdiplus.h>
#pragma comment(lib, "gdiplus.lib")
using namespace Gdiplus;      

(1)在應用程式項目的應用類中,添加一個成員變量,如下列代碼:

  ULONG_PTR m_gdiplusToken;

在vc中使用GDI+的方法

(2)在應用類中添加ExitInstance的重載,并添加下列代碼用來關閉GDI+: 

Gdiplus::GdiplusShutdown(m_gdiplusToken);      
在vc中使用GDI+的方法

ULONG_PTR是一個DWORD資料類型,該成員變量用來儲存GDI+被初始化後在應用程式中的GDI+辨別,以便能在應用程式退出後,引用該辨別來調用Gdiplus:: 

(3)在應用類的InitInstance函數中添加GDI+的初始化代碼:

注意:下面這些GDI+的初始化代碼必須放在m_pMainWnd->UpdateWindow();之前。

Gdiplus::GdiplusStartupInput gdiplusStartupInput;
 Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);      
在vc中使用GDI+的方法
在vc中使用GDI+的方法

(4)在需要繪圖的視窗或視圖類中添加GDI+的繪制代碼。

1. 在單文檔應用程式中使用GDI+

以上過程,在單文檔,多文檔或是基于對話框的工程步驟都是一樣的。下面,我們就是以一個單文檔應用程式CBmpRotate作為示例的。下面列出第4步所涉及的代碼:

在vc中使用GDI+的方法
在vc中使用GDI+的方法

 基于對話框的工程GDIBase

 //要在dlg.DoModal();之前

 Gdiplus::GdiplusStartupInput gdiplusStartupInput;

 Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);

在vc中使用GDI+的方法
在vc中使用GDI+的方法

可以看到lastResult Ok,可以用Gdiplus::Ok來判斷其狀态是否調用成功。

在vc中使用GDI+的方法

//如何在dlg.DoModal();之後添加如下代碼

 Gdiplus::GdiplusStartupInput gdiplusStartupInput;

 Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);

 就會出現

在vc中使用GDI+的方法

出現GdiplusNotInitalized,說明初始化不正确。

當然運作後,什麼也沒出現

在vc中使用GDI+的方法