タイトル : 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 プロパティに割り当てられた画像は、 他のウィンドウが重なっても、消えてしまう事はありません。 |