dポイントプレゼントキャンペーン実施中!

VC++初心者なんですが、画像処理関係のプログラムをVC++で作っています。で、子ウィンドウに表示されている画像のRGBそれぞれのヒストグラムをダイアログボックスに表示したいのですが、ダイアログボックスに絵(グラフ)を描く方法がわかりません。どういう手順でやればいいですか?エディットボックスにGDIとかで絵を描くことは可能なんですか?またはピクチャーボックスですか?

A 回答 (1件)

>エディットボックスにGDIとかで絵を描くことは 可能な


>んですか?またはピクチャーボックスですか?

CWnd::GetDC() で CDC へのポインタを取得してやれば、ピクチャーボックスやエディットボックスといわず、どこへでも CDC の豊富な描画関数群で何でも描くことはできます。描き終わったら CWnd::ReleaseDC() で解放してやればいいです。問題は OnPaint() などで上書きされてしまうことです。(折角描いても再描画で消えてしまう)だから、OnPaint()にも同じような描画ロジックを組み込む必要があるかも知れません。
OnPaint() では CWnd::GetDC()や CWnd::ReleaseDC() 使ってはいけないのがポイントです。すでに OnPaint()では描画用のデバイスコンテキストがあるはずなのでそれを使ってください。

OnPaint()や自前でCWnd::GetDC()で描画ロジックを組み込むと SelectObject() で最初のオブジェクトに戻し忘れたり、DeleteObject() 忘れたりしてメモリーリークの原因になりがちなので気をつけてください。

この回答への補足

回答ありがとうございます。エディットボックスでもどこでも描画関数を使うことができるんですね。で、早速プログラムに取り掛かってみたんですが、新たな疑問ができました。例えば、MoveTo(x,y), LineTo(x,y)などを用いて線を引く場合、線を引く対象をどうやってダイアログボックス内のエディットボックスにするのですか?クラスウィザードで線を引く予定のエディットボックスにコントロール型のメンバ変数を割り当ててそれをどこかで使うのかな?と思ったのですがどうもよくわかりません。もし、また時間があればご回答願います。

補足日時:2002/05/31 09:35
    • good
    • 0
この回答へのお礼

たびたびスイマセン。先ほどの補足ですが、できました。プログラムに励みますので、また私の質問を見かけたらご回答お願いします。SpiralGalaxyさんのような専門家の方に教えていただきますと、上達が早いような気がします。ありがとうございました。

お礼日時:2002/05/31 10:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!