初めて自分の家と他人の家が違う、と意識した時

最近、VB6からVB.NET 2003へプログラムの移行作業を始めたものです。極々基本的なことなのかもしれませんが、.NETでフォームに描いたグラフィック(線や円など)を消去するコードがなかなかうまく書けず困っています。
VB6でしたら Form**.Cls だけで消えるのですが、それに対応するコードはどのように記載すれば宜しいでしょうか?

ヘルプなどで見るとClearメソッドを使用するとありましたが、どうもうまく動きません。

例えば、以下の簡単な例でしたらどのように変えれば宜しいでしょうか?
宜しくお願いいたします。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Dim grph As System.Drawing.Graphics
  grph = Me.CreateGraphics
  grph.DrawLine(Pens.Red, 50, 25, 200, 150)
  ClearScreen(e)
End Sub

Public Sub ClearScreen(ByVal e As PaintEventArgs)
  Dim BGcolor As Color
  BGcolor = Color.FromArgb(0, 0, 0)
  e.Graphics.Clear(BGcolor) '背景色
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  ClearScreen(e)
End Sub

A 回答 (1件)

お望みのことをするには、Button2のClick時にFormのRefreshメソッドを呼んであげればOKです。

そうすれば、フォームが再描画されて描画済みのグラフィックが消去されます。

コードとしてはこんな感じです。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Dim grph As System.Drawing.Graphics
  grph = Me.CreateGraphics
  grph.DrawLine(Pens.Red, 50, 25, 200, 150)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  Refresh()
End Sub
    • good
    • 3
この回答へのお礼

有難うございました!
確かにうまく行きました。
Clearメソッドは背景色が決められたもの、(そうでなくても吸い上げればよいとは思いますが)に対してはうまく動くようです

お礼日時:2004/08/07 03:04

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A