トップ回答者
Panelの上にPanelを表示

質問
-
Panelの上にPanelを表示する場合、上のPanelを.visible=trueで表示は出来るが、消す場合、.visible=falseをやると下のPanelに白く跡形が出来る。VB6ではPanelは無かったがpictureコントロールの上にpictureコントロールを表示させる場合、autoredrawプロパティをtrueにして置けば重ねて表示し上をvisible=falseで消したら上のpictureコントロールが消え下のpictureコントロールはそのまま残っていたが、このようなことはvb2008のPanelコントロールやpictureコントロールでは出来ないのでしょうか。教えてください。
回答
-
グラフィックス (Visual Basic 6.0 ユーザー向け)
http://msdn.microsoft.com/ja-jp/library/9dtfzwyx(v=vs.90).aspx
の記述は基本ですが、実際に、以下の環境で試すと、仰られる様な状態にはなりません。
お確かめ下さい。Visual Basic 2008 sp1 Express Edition os : Win7sp1x86
Form に PictureBox ふたつ一部重ね合わせ.Image = Image.FromFile で Load
Button で上の絵を .Visible = False > ちゃんと下の絵が出て来るPanel に e.Graphics で書いた場合には、昔の記憶ですが、仰られる様な状態があったような。
仰られる様に、全て、PictureBox の重ね合わせ(以前と同じ手法)でやられたら如何でしょうか。
必要でしたら、一部、透過色指定なども組み合わせて。- 編集済み ShiroYuki_Mot 2014年3月8日 7:28 ミススペル訂正
- 回答の候補に設定 星 睦美 2014年3月11日 2:14
- 回答としてマーク 星 睦美 2014年3月12日 0:35
すべての返信
-
Panelの上にPanelを表示する場合、上のPanelを.visible=trueで表示は出来るが、消す場合、.visible=falseをやると下のPanelに白く跡形が出来る。
ひらぽん http://d.hatena.ne.jp/hilapon/
- 編集済み ひらぽんModerator 2014年3月7日 14:13 文字の追加
-
ご回答有難うございます。開発環境はVistaのVisual Studio2008のVBです。宜しくお願い申し上げます。
Panelにグラフィックで線を引き、その上にPanel又はPictureBoxを表示させると、.visible=trueで表示はするが、.visible=falseで消すと下のPanelの引いた線が表示した部分だけ消えてしまいます。(簡単な線だけなら再描画すればいいが、実用では複雑な描画の上にPanelやPictureBoxを表示させる。)Panelを全てPictureBoxに変えても同じです。要するにPictureBox又はPanel(どちらを上にしたり、下にしたりしても同じ)を二つ重ねると重なった部分が消える症状です。VB6では出来ていたので.NETでできない筈がなく何か方法が変わったのではないかと思っているのですが。宜しくお願いします。
- 編集済み gosekiten 2014年3月8日 5:21
-
グラフィックス (Visual Basic 6.0 ユーザー向け)
にあるように原則として描画はPaintイベントで行うようになりました。すなわち、Refreshなどで再描画してください。(ちらつきは「vb.net ダブルバッファリング」で対策がでます)
もしくは、PictureBoxのImageに書き込むことも可能です。もちろん、AutoRedrawと同じように画像分のメモリを消費するので注意です。
PictureBox上で消える画像&描画・消えない画像&描画
その他、VB6との違いが載っているので、取り合えず一読をお勧めします。
- 回答の候補に設定 星 睦美 2014年3月11日 2:14
-
グラフィックス (Visual Basic 6.0 ユーザー向け)
http://msdn.microsoft.com/ja-jp/library/9dtfzwyx(v=vs.90).aspx
の記述は基本ですが、実際に、以下の環境で試すと、仰られる様な状態にはなりません。
お確かめ下さい。Visual Basic 2008 sp1 Express Edition os : Win7sp1x86
Form に PictureBox ふたつ一部重ね合わせ.Image = Image.FromFile で Load
Button で上の絵を .Visible = False > ちゃんと下の絵が出て来るPanel に e.Graphics で書いた場合には、昔の記憶ですが、仰られる様な状態があったような。
仰られる様に、全て、PictureBox の重ね合わせ(以前と同じ手法)でやられたら如何でしょうか。
必要でしたら、一部、透過色指定なども組み合わせて。- 編集済み ShiroYuki_Mot 2014年3月8日 7:28 ミススペル訂正
- 回答の候補に設定 星 睦美 2014年3月11日 2:14
- 回答としてマーク 星 睦美 2014年3月12日 0:35