tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^11: 追加Formの移動で描いた図が消える
投稿日: 2009/08/25(Tue) 23:51
投稿者魔界の仮面弁士
> > たとえば描画処理の中に、PictureBox1.Refresh() などというコードが
> > 紛れ込んでいないでしょうか。
>  はい。12個いれています。

Paint イベント内で Refresh しないようにしてください。
Refresh メソッドを呼び出すと、強制的に描画処理を行わせる事になりますので、
そこで Paint イベントが再度呼び出されてしまいます。

PictureBox1_Paint には、Picture1 の描画処理のみを記述し、
PictureBox2_Paint には、Picture2 の描画処理のみを記述するようにします。


>> PictureBox の Image プロパティに描画した結果を割り当てる方法(No.9276 の第2案)を
>> 使った方が、都合が良いかと思いますよ。こうすれば、画像が消える事は無いので、
>> VB6 で AutoRedraw を設定したときのような効果を得る事ができます。
> 当方にとってはImageをとる手法を検討する必要があります。

No.9276 に書いた内容の再掲となりますが、その方法を実装するためには、
今まで、PictureBox1.CreateGraphics() を使っていたコードを、
 Dim bmp As New Bitmap(300, 200)   '任意サイズ(ここでは300x200)の画像を用意。
 Using g As Graphics = Graphics.FromImage(bmp)    '描画に必要な Graphics を得る。
  g.Clear(SystemColors.Control)   '背景塗りつぶし。Color.Transparent や Color.White などでも可。
  g.DrawLine(……)   '各種描画処理。DrawImage とか DrawText とか。
 End Using
 PictureBox1.Image = bmp    '描画された Bitmap を PictureBox に割り当てる。
のように変更すれば OK です。この方法では、Paint イベントが不要となります。

Image プロパティや BackgroundImage プロパティに割り当てられた画像は、
他のウィンドウが重なっても、消えてしまう事はありません。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。