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

タイトルどおりにしたいのですが、どうすればいいのでしょうか?

フォームとピクチャーコントロールがあり、
ピクチャーコントロールにもクラスを作成してあります。

円はArcを使ってかければいいなと思っております


よろしくお願いします

A 回答 (2件)

 こんにちは。

OnPaint()を追加して描写すればOKです。
 以下参考程度に。

// CPictureBox メッセージ ハンドラ
void CPictureBox::OnPaint()
{
CPaintDC dc(this); // 描画用のデバイス コンテキスト

// TODO: この位置にメッセージ ハンドラ用のコードを追加してください
CPen pen(PS_SOLID, 1, RGB(0, 255, 0));

dc.SelectObject(&pen);

RECT rc;
this->GetClientRect(&rc);

const POINT ptStart= {rc.right / 2, 0};
const POINT ptEnd= {rc.right / 2, 0};

dc.Arc(&rc, ptStart, ptEnd);

// 描画用メッセージとして CStatic::OnPaint() を呼び出してはいけません
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

無事通りましたが、

もしピクチャコントロールが3つあって1つにのみ表示したい場合はどうすればよいのですか?
※ピクチャコントロールすべてにクラス有

お礼日時:2008/09/03 18:32

 御礼頂き有難うございます。



>>もしピクチャコントロールが3つあって1つにのみ表示したい場合はどうすればよいのですか?
>>※ピクチャコントロールすべてにクラス有
(1)全てに同じクラスを使用しているのでしょうか?
 手っ取り早いのはbool形のフラグを用意して、それぞれに描くか描かないかを決めさせる事です。

(2)ピクチャコントロールが3つ有る(以下AとBとC)と言う事ですが、ABCのうちAだけArc()で円を描いて、BCは何もしないのであるならば、
 クラスを二つ用意するやり方もあります。
 【クラスA】OnPaint()の有るクラスを準備して設定
 【クラスBとC】OnPaint()の無いクラスを準備して設定

 ただし、BCもそれぞれに、別の絵を描かせたいとなると(1)(2)共、使い物にならなくなります。
 やり方は色々ありますが、手っ取り早い話、ABCそれぞれのクラスを準備してそれぞれのOnPaint()で、描写の仕方を変えるのが手っ取り早いでしょう。

 如何してもABC共同じクラスを使用して、描写の仕方だけ変えたいのであるならば、関数ポインタ又はpimplイディオムを使用する事に成るかもしれません。
    • good
    • 0
この回答へのお礼

お礼遅れ申し訳ございません

アドバイスの結果、無事動きました。
教えていただいたプログラムをもう1度見直し、次は梃子摺らず書ける様にしていきたいです。

ありがとうございました。
すごく助かりました

お礼日時:2008/09/04 09:49

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