• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            程序讓生活更美好

            半畝方塘 天光云影

              C++博客 ::  :: 新隨筆 :: 聯系 ::  :: 管理 ::
              55 隨筆 :: 4 文章 :: 202 評論 :: 0 Trackbacks

            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>。

            posted on 2012-02-21 20:23 北風之神007 閱讀(2259) 評論(0)  編輯 收藏 引用 所屬分類: c/c++
            久久天天躁狠狠躁夜夜躁2O2O| 久久婷婷是五月综合色狠狠| 国产精品久久波多野结衣| 久久亚洲高清观看| 日韩久久久久中文字幕人妻| 国产精品久久久香蕉| 久久久久亚洲精品无码蜜桃| 亚洲国产精品久久久久婷婷老年| 久久99亚洲综合精品首页| 99精品国产99久久久久久97 | 久久久久久久波多野结衣高潮| 国产情侣久久久久aⅴ免费| 久久久久无码中| 99久久er这里只有精品18| 久久久噜噜噜久久中文字幕色伊伊| 国产精品久久久久…| 精品久久人人爽天天玩人人妻| 国产精品九九久久免费视频| 精品久久久久久无码专区 | 日本精品久久久久久久久免费| 精品国产乱码久久久久久人妻| 麻豆AV一区二区三区久久 | 亚洲国产精品成人AV无码久久综合影院 | 国产免费久久精品99久久| 亚洲欧美成人综合久久久| 久久99精品久久久久久水蜜桃| 亚洲精品无码专区久久久| 国产精品99久久不卡| 97久久超碰国产精品旧版| 久久久久99精品成人片欧美| 久久精品国产亚洲AV影院 | 久久婷婷国产麻豆91天堂| 久久久免费精品re6| 久久久久久九九99精品| 久久精品亚洲日本波多野结衣 | 人妻无码精品久久亚瑟影视| 久久国产精品免费一区| 精品久久久久一区二区三区| 色成年激情久久综合| 国产香蕉97碰碰久久人人| 99热都是精品久久久久久|