vcにおけるgdi+インストール

6713 ワード

GDI+は2次元ベクトル画像、グリッド画像、レイアウトに応用でき、C/C++プログラマーのために設計されたC++クラスとして表現されるインタフェースであり、Windowsベースのすべてのアプリケーションに使用できる.GDIの後継者として、GDI+はテキストのアンチエイリアシング、グラデーションブラシ、Alpha溶合などの新しい機能をGDIに追加しました.GDIの多くの既存の機能も最適化されています.また、GDI+はプログラミングモードを変更し、より柔軟で使いやすいようにしました.
GDI+は、ここに限定するものではない.Netには存在し、実際にはWindows XPまたはWindows Server 2003オペレーティングシステムによって提供されています.GdiPlusという名前でパッケージされていますdllのファイルにあります.このファイルは、C:/Windows/WinSxSの対応するフォルダの下にあります.筆者のXPシステムを例にとると、2つのバージョンがあり、その対応するフォルダはそれぞれ:
x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.0.0_x-ww_8d353f13x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.2600.2180_x-ww_522f9f82
アプリケーションでは、バージョン番号を指定する必要がなく、最新のバージョンを自動的に選択します.まず、VC 6でGDI+アプリケーションを作成したと仮定し、degbugバージョンでメニューBuild->Start Debug->Goをクリックしてデバッグを開始し、アプリケーションを終了します.VC 6のOutput領域では、Loaded''C:/WINDOWS/WinSxS/x 86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.2600.2180_x-ww_522f9f82/GdiPlus.dll'は、システムが最新バージョンを自動的に選択したことを示します.
WindowsがC言語で書かれているようにGdiPlus.dllはC関数で実現され,C++クラスにカプセル化されず,非Cプログラマーに不便をもたらす.またMFCがやったように、マイクロソフトは再びこれらのC関数をC++クラスの形式にパッケージ化し、C++プログラマーにGdiPlus.hヘッダの30ヘッダファイルとGdiPlus.lib.したがって、Cプログラマーの場合はGdiPlusのみです.dllでいいです.C++プログラマーはGdiPlusを見つける必要があります.hヘッダファイル及びGdiPlus.libファイル.
Windows XPまたはWindows Server 2003は、システムが備えるGdiPlusを使用する.dllは、システムサービスと競合しないようにします.このファイルは、Windows XP以下のバージョンのWindows、例えばWindows NT 4.0 SP 6、Windows 2000、Windows 98およびWindows Meの場合に必要です.マイクロソフトの公式アドレスに配布パッケージgdiplusをダウンロードすることができます.dnld.exeファイル、アドレス:http://www.microsoft.com/downloads/details.aspx?FamilyID=6a63ab9c-df12-4d41-933c-be590feaa05a&DisplayLang=en
このファイルは、アプリケーションのディレクトリに解凍する必要がありますが、システムディレクトリにインストールしないでください.
C++プログラマーはGdiPlusを探しに行かなければならない.h及びGdiPlus.lib.以下のアドレスはgdiplusという.zipのファイルには、次のファイルが含まれています.http://www.crazy-bit.com/download/gdiplus.zip
以下のアドレスはGdiPlusを含むワンストップのすべてのリソースを提供する.hヘッダファイル、GdiPlus.lib及びGdiPlus.dll:http://www.codersource.net/samples/mfcgdiplus.zip
解凍の仕方によって、参照方法が異なります.
第1の方法は直接参照であり、gdiplusを必要とする.h, gdiplus.libはVC対応のincludeおよびlibディレクトリにそれぞれコピーされます.この2つのディレクトリは、VC 6のToos->Options->Directoriesラベルページで、Show directories forドロップダウンリストボックスでInclude filesおよびLibrary filesを選択してクエリーできます.Includeのように、一般的には、VC 98/INCLUDE、VC 98/MFC/INCLUDEおよびVC 98/ATL/INCLUDDEの3つのパスが含まれ、それぞれ非MFCアプリケーション、MFCアプリケーションおよびATLアプリケーションで使用される異なるパスに対応している.
そしてStdAfx.hには、以下の文が加えられる.
#define ULONG_PTR ULONG #include using namespace Gdiplus;#pragma comment(lib, "gdiplus.lib")
GdiPlusInit.hにULONG_を使用しましたPTRのデータ型ですが、VC 6では定義されていません.したがって、#include文の前に定義する必要があります.#pragma comment(lib,「gdiplus.lib」)は、接続時に適用するディレクトリまたはシステムLIBディレクトリの下でgdiplusを検索することを示す.lib.
2つ目の方法は、いずれかのフォルダに解凍するStdAfxである.hに具体的な経路を明確に示す.
#define ULONG_PTR ULONG #include "C:/gdiplus/Include/gdiplus.h"using namespace Gdiplus;#pragma comment(lib, "C:/gdiplus/lib/gdiplus.lib")
以上の方法でgdiplusを接続する以外は.libには、Project->Settings->Link->Object/library modulesにgdiplusを入力することもできる.lib(複数のライブラリがある場合はスペースで区切ることができますが、GDI+は1つのライブラリしかありません).この方法はStdAfxでは使用できない.hに#pragmaコメントを入力します.
GDI+を使用する前にGdiplusStartup()からGDI+を起動し、使用が完了したらGdiplusShutdown()を呼び出して現場をクリーンアップする必要があります.MFCの特徴に応じて、XXXAppクラスのInitInstance()およびExitInstance()に配置する.
まずXXXAppクラスに2つのプライベートメンバー変数を追加します:private:GdiplusStartupInput gdiplusStartupInput;ULONG_PTR gdiplusToken;
次にInitInstance()でm_を呼び出しますpMainWnd->ShowWindow()およびm_pMainWnd->UpdateWindow()の前にGdiplusStartup()を呼び出します.
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
//The one and only window has been initialized, so show and update it.m_pMainWnd->ShowWindow(SW_SHOW);m_pMainWnd->UpdateWindow();return TRUE;
なお、GdiplusStartup()をShowWindow()およびUpdateWindow()の後に置くと、ウィンドウが最初に表示されると、GDI+がまだ起動していないため、GDI+が描いた図形は2番目のWM_まで表示されないPAINTのメッセージが届きます.
ExitInstance()では、次のようにコードを記述します.
GdiplusShutdown(gdiplusToken);return CWinApp::ExitInstance();
今、GDI+の準備ができていて、使えます.
XXXViewクラスのOnDraw()メソッドでは、次のようになります.
Graphics graphics(pDC->m_hDC);Pen pen(Color(50, 255, 0, 255), 15);pen.SetDashStyle(DashStyleDash);pen.SetStartCap(LineCapRoundAnchor);pen.SetEndCap(LineCapArrowAnchor);graphics.DrawLine(&pen, 20, 20, 300, 100);graphics.DrawLine(&pen, 300, 100, 600, 100);
先にOnDraw()メソッドのパラメータpDCを使用するメンバー変数m_hDCはスタック上にGraphicsのインスタンスgraphicsを構築し、Penを作成して設定し、graphicsのDrawLine()メソッドで直線を描きます.
GDIと比較すると、GDI+はPen、BrushなどのオブジェクトをDC再描画に選択する必要はなく、DCのハンドルを使用してGraphicsインスタンスを作成し、その後、このインスタンスを直接使用して描画します.このスタイルは、確かにプログラマーにとって非常に便利です.
これで、VC 6 MFCでGDI+を使って素晴らしい未来を描くことができます.:)
 
本文はCSDNブログから来て、転載して出典を明記してください:http://blog.csdn.net/desow/archive/2009/09/25/4592847.aspx
 
インストール記事2:
VC.NetでGDI+を使う方法はVisual C++.NETでGDI+を使用する場合は、(1)、アプリケーションにGDI+を追加する含むファイルgdiplus.hおよび追加のクラスライブラリgdiplus.lib.通常gdiplus.hアプリケーションに追加するファイルを含むstdafx.hファイルにgdiplus.libは2種類追加することができる:1つ目はstdafxに直接である.hファイルに次の文を追加します.
#pragma comment( lib, "gdiplus.lib" )

もう1つの方法は、「プロジェクト->プロパティ」メニューコマンドを選択し、ポップアップダイアログボックスで左側の「リンク->入力」オプションを選択し、右側の「依存項目の追加」ボックスにgdiplusを入力することです.lib,(2)、アプリケーションプロジェクトのアプリケーションクラスに、次のコードのようなメンバー変数を追加します.
ULONG_PTR m_gdiplusToken;

ここで、ULONG_PTRは、GDI+が初期化されたアプリケーション内のGDI+識別子を保存するDWORDデータ型であり、アプリケーションが終了した後、Gdiplus::GdiplussShutdownを呼び出してGDI+を閉じることができるようにする.(3)、アプリケーションクラスにExitInstanceのリロードを追加し、次のコードを追加してGDI+をオフにします.
int CGDIPlusApp::ExitInstance()
{
 Gdiplus::GdiplusShutdown(m_gdiplusToken);
 return CWinApp::ExitInstance();
}

(4)、アプリケーションクラスのInitInstance関数にGDI+の初期化コードを追加する:
BOOL CGDIPlusApp::InitInstance()
{
 CWinApp::InitInstance();
 Gdiplus::GdiplusStartupInput gdiplusStartupInput;
 Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
 ...
}

(5)、描画が必要なウィンドウまたはビュークラスにGDI+の描画コードを追加する:
void CGDIPlusView::onDraw(CDC *pDC)
{
 Graphics graphics( pDC->m_hDC );

 GraphicsPath path; //       
 path.AddEllipse(50, 50, 200, 100);

 //           
 PathGradientBrush pthGrBrush(&path);

 //            
 pthGrBrush.SetCenterColor(Color(255, 0, 0, 255));

 //             , alpha  0
 Color colors[] = {Color(0, 0, 0, 255)};
 INT count = 1;
 pthGrBrush.SetSurroundColors(colors, &count);

 graphics.FillRectangle(&pthGrBrush, 50, 50, 200, 100);

 LinearGradientBrush linGrBrush(
  Point(300, 50),
  Point(500, 150),
  Color(255, 255, 0, 0), //   
  Color(255, 0, 0, 255)); //   

 graphics.FillRectangle(&linGrBrush, 300, 50, 200, 100);
}