・通常時
・押下時
・ボタン上にマウスポインタがある時
上記3つ状態変化により3種類の画像をボタン上に表示させています。
(表示はDrawItem内でGDI+を使って描画させています。)
が、通常時の画像は透過画像のため、
(ほかの2つも透過画像だが、背景がある)
・ボタン上にマウスポインタがある時⇒通常時
の変化の際に、マウスポインタ画像の上に通常画像が重なって表示されて
しまいます。
なので、表示を入れ替える際は1度消してから描画させれば
よいかなと考えています。
GDI+で描画した画像を削除する関数があればどなたか教えてください。
環境MFC VC2003
背景の描画で消去を実現するんでしょ
あさん、返信有難うございます。
>背景の描画で消去を実現するんでしょ
すいません、どういう意味でしょうか?
ボタンとは別に背景を描画しろということですか?
すいません、名前間違えました!
できました。
お騒がせしました。
InvalidateRectで背景を消すだけでした。
あなたがどのようなボタンを描きたいのか
DrawItemで何しているのか
そしてどのような問題が起きているのか
正確・詳細を私は知らないので判らない。
だから、私の発言は何か勘違いしているかもしれない。
ボタンのような立体的な枠を描いてから
その中に画像を表示するものもあるだろうし、
画像がそのままボタン全体になっているものもあるだろう。
例えば
ダイアログに画像を表示していて
この画像を削除するということは、
(このダイアログは灰色で塗られているものとする)
画像が表示されているところを灰色で塗ることになる。
背景もボタンの一部だと俺は思っている。
ここで私のいう背景とは
画像の背後にある、つまりもし画像が無かったら表示されているべき色や絵のこと。
親がダイアログでクリップしないウィンドウスタイルで
ダイアログの背景色で塗ってほしいなら
変化の際に(DrawItemなどから呼ぶと無限ループになりそうだから駄目)
InvalidateRect
UpdateWindow
で親ダイアログに背景色で塗りつぶしてもらうとか。
ただしこれでうまくいくかは知りません。