VC6.0使用GDI+的配置

GDI Plus 描述:

    GDIPlus是微軟出的一個C++面向對象庫,它爲windows的圖形設備接口提供了更好的訪問。與標準的windows GDI相比,二維繪圖和圖片使用得到很大改進。使用GDIPlus你可以繪製定製的對象,打開各種圖片並以各種格式存儲它們,使用多種字體和文本繪製軌跡 和各種調色板功能。

GDI Plus兼容性:

    GDIPlus最初是爲MS Visual Studio 7開發的,但是因爲這個產品的發佈推遲了,所以微軟就爲Visual Studio 6發行了這個庫的版本。如果你使用Visual Studio 6,可以從這裏下載MFC GDI Plus庫文件。http://www.codersource.net/samples/mfcgdiplus.zip

a)Visual Studio 7或者更新版本使用這個類庫,只需要在你的工程裏面包含<gdiplus.h>

b)早期版本的MSVS要使用這個類庫,需要將下載的zip文件解壓到一個文件夾,設其路徑爲your_path,然後將目錄your_path/ gdiplus/includes加入到開發環境的包含路徑中(Tools->Options->Directories-> Include files),然後在你的工程中你必須包含文件<gdiplus>,但是在那之前你必須定義define ULONG_PTR(這是GDIPlus中的一個定義,在老版本的VS中沒有定義過)。也就是說,在StdAfx.h中你需要添加如下代碼:

#define ULONG_PTR ULONG
include <gdiplus.h>

然後將目錄your_path/gdiplus/lib包含到你的工程(Tools->Options->Directories->Library files),以使它們可以鏈接到你的程序。

【efivol補充:還必須在StdAfx.h中#include <gdiplus.h>之後加入這兩句,不然有錯。

using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")

補充完畢】

在編譯完你的工程之後,將your_path/gdiplus/gdiplus.dll拷貝到生成的執行文件所在的文件夾(/Debug或者/Release)

 

使用GDI Plus類庫:

要使用GDI Plus類庫,你必須首先初始化類庫。初始化是一個調用兩個參數的函數,這兩個參數是必須在整個GDIPlus會話中都存在的變量。在使用完GDIPlus之後,必須調用一個函數來關閉會話。

如果你使用MFC,一個好的方法是在你的CWinApp派生的類中(比如CYourProjectApp)添加變量:

private:
GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_pGdiToken;

然後在app的InitInstance函數中的開始添加一行代碼:

GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL); //gdi+ init

然後重載ExitInstance函數(如果沒有的話),在其中添加一行代碼:

GdiplusShutdown(m_pGdiToken); //gdi+ end session

這些操作之後你就可以在你的程序中使用類庫的功能了。

------------------------------------翻譯完畢------------------------------------

可以使用了麼?不可以。我們新建一個單文檔的工程,按上面的步驟做完,然後在View類的OnDraw()函數裏添加如下代碼:

Graphics graphics(pDC->m_hDC);
Pen pen(Color(255, 0, 255));
graphics.DrawLine(&pen, 0, 0, 200, 100);

編譯,出錯。就這樣還是被很多人轉載,可惡吧。

錯誤提示爲:
f:/includes/gdiplusenums.h(29) : error C2146: syntax error : missing ';' before identifier 'GraphicsState'
f:/includes/gdiplusenums.h(29) : fatal error C1004: unexpected end of file found

這個錯誤在網上百度一下有很多,問的人多,回答的人也多,但就是幾乎沒有人答對。解決方法是

在#include <gdiplus.h>之前加上#include <afxdtctl.h>

好了,一條線畫出來了。爲什麼啊,這就不知道了,據說這個文件的作用是爲IE4公共控件提供MFC支持。

柳暗花明之後,才發現這裏有篇文章 Hints to get GDI+ running,是一個人寫的建議。

裏面說,要防止編譯錯誤和問題,需要在#include <gdiplus.h>之前加上#include <afxwin.h>、<afxext.h>、<afxdisp.h>和<afxdtctl.h>。還 說zip裏面的dll文件不要直接拷貝到系統文件夾,最好是放在你工程裏也包含exe的私有文件夾裏面(這一點上面的文章照做了)。原來還要包含那麼多文 件,看來我編譯的時候出的錯還不夠多,哈哈,這個人很偉大。

發佈了26 篇原創文章 · 獲贊 13 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章