none
GDI+ga RRS feed

  • 質問

  • 画像処理に挑戦しようと思い、GDI+を使おうと思っています。

    しかし、下記の様にコードを記しましたが受け付けてくれません。

     

     

    #pragma comment(lib,"gdiplus.lib")
    #include <gdiplus.h>
    #include "stdafx.h"
    using namespace Gdiplus;  
    //'Gdiplus' : この名前を指定された名前空間は存在しません。とエラー

     

    //WM_PAINTイベントから呼び出し

    void MyPaint(HDC hdc)
    {
     Graphics MyGraphic(hdc);  //'Graphics' : 定義されていない識別子です。とエラー
     Image MyImage(L"sample.jpg");  //'Image' : 定義されていない識別子です。とエラー
     MyGraphic.DrawImage(&MyImage,0,0,MyImage.GetWidth(),MyImage.GetHeight());
     return;
    }

     

    gdiplus.libもリンクしているし、なにが悪いのか見当も付かない状態です。

    プロジェクトの設定の問題のような気もするのですが解決法が分からずにいます

    どうすればGDI+を使用できるのか解決法をご教授ください。

    2007年10月6日 6:22

すべての返信

  • プリコンパイル済みヘッダの問題のような気がします.

    "stdafx.h" はプリコンパイル済みヘッダに用いるヘッダファイルでしょうか?

    もしそうであれば,これがソースの先頭にないのは不自然に見えます.

    2007年10月6日 13:39
  •  

    返信ありがとうございます。

    stdafx.はプリコンパイル済みヘッダに用いるヘッダファイルと思います。プロジェクトを作ると自動的に作られる標準のシステム インクルード ファイルのようです。

    #include "stdafx.h"の記述場所をイロイロ変えてみましたが、今度は

    gdiplusbitmap.h

    gdiplusimaging.h

    gdiplusenums.h

    gdiplusmetafile.h

    ....などなど

    のヘッダファイルの識別子を認識してくれなくなります。Gdiplus名前空間を使用できていないのが原因と思いますが、正直良く分かりません。

    Web上にもGDI+を使用するコードを見かけますが、VC++2005ExpressEdition(Win32SDK)ではどうにもビルドできません。

    VC++2005ExpressEditionでWin32Application + GDIplus では、なにかプロパティを変更する必要があるのでしょうか?
    2007年10月7日 7:56
  •  にぎりめし さんからの引用
    VC++2005ExpressEditionでWin32Application + GDIplus では、なにかプロパティを変更する必要があるのでしょうか?

     

    GDIPlus 専用の設定というのは無くて,ライブラリを使うための設定一般の何処かが間違っているのだと思いますが,にぎりめしさんのプロジェクト設定がどうなっているかよく分からないので,私も原因はよく分かりません.

     

    試しにLaMoo さんの『GDI+ 矩形転送ベンチマーク』のソースコードをダウンロードしてビルドしてみましたが,コンパイル・実行ともに問題ありませんでした.

    私が使っているのは Express Edition ではないので参考になるかどうか分かりませんが,一応ご参考までに.

    2007年10月7日 13:03
  •  

    ありがとうございます。

    こちらでも『GDI+ 矩形転送ベンチマーク』のソースコードが正常にビルドできました。

     

    #include "stdafx.h"

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

     

    の記述でコンパイラも受け付けてくれました。

    しかし#include <comdef.h>がないとエラーがでるのは不思議です。

    理解は今だ中途パンパですが、目的は達成されました。

    ありがとうございました。勉強にはげみます!

    2007年10月7日 14:00