• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:GDI+について)

GDI+について

このQ&Aのポイント
  • GDI+を使用してプログラミングをする際の利点とは何でしょうか?
  • GDIで作成した画像バッファのhdcを使用してGDI+関数で描画する方法について教えてください。
  • GDI+で画像バッファを作成し、そのデバイスコンテキストを取得することは可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

私も最近GDI+を使い始めて苦しんだので、わかる所を。 日本語のマニュアルを探すと.NETばかりですからね。MSDNで調べても良くわからなくて結局ヘッダを調べて作っています。 手順の(2)のところをこうして下さい。 Graphics Graph(hdc); //Graphics クラスのインスタンス これで、Grpahを使ってラインや円などを描けるようになります。 四角に塗りつぶしなら、 SolidBrush brush( Color(255,0,0,0) ); //不透明の黒 Grpah.FillRectangle(&brush,0,0,100,100); //四角形 といった感じです。

Daisuke-now
質問者

お礼

ご回答ありがとうございます、本当に助かりました。 しかし一つ不思議な事があります。 GDIではWM_CREATEメッセージの時点で描画したものが画像バッファに反映されているのですが、GDI+で同じようにWM_CREATEで、  Graphics Graph(hdc);  //Graphics クラスのインスタンス を実行してWM_CREATE内でGDI+描画するとバッファに反映されていないんです。 しかしWM_PAINTで  Graphics Graph(hdc);  //Graphics クラスのインスタンス を実行し、WM_PAINT内でバッファにGDI+で描画すると描画されます。 上記が一つ目の疑問点です。 それからもう一つ不思議な事があります。 画像バッファにGDI+で描画した図形にアンチエリアスをかけていたのですが、ウインドウを別のウィンドウで隠したりして再描画させると最初にGDI+で描画した図形にアンチエリアスがかかっていません。  Graph.SetSmoothingMode( SmoothingModeAntiAlias ); 上記のようにアンチエリアス指定してから描画しています。 普通にGDI+だけで直接ウィンドウのHDCに対してWM_PAINTで描画している時にはアンチエリアスがかかっているのですが、不思議です。 たびたびすみませんがご教授よろしくお願いいたします。

その他の回答 (1)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

日ごろMFC専門でWindowsAPIの生で組まないので、答えが間違ってるかも知れませんが。 >WM_CREATEメッセージの時点で描画したものが画像バッファに反映されているのですが タイミング的にGDI+の初期化は完了していますか? >画像バッファにGDI+で描画した図形にアンチエリアスをかけていたのですが、ウインドウを別のウィンドウで隠したりして再描画させると最初にGDI+で描画した図形にアンチエリアスがかかっていません。 それは経験したことがないですね。 Graph.SetSmoothingMode( SmoothingModeAntiAlias ); が何処かで取り消されているとしか思えません。 今回は、あくまで参考意見という事で。

関連するQ&A