MouseMoveイベントで描画した直線を更新につには

解決


きゅう  2008-03-20 19:13:08  No: 139377  IP: 192.*.*.*

Visual Basic 2008 Express Editionを使ってます。
PictureBox1にマウスをクリックしたときの座標(BStartX, BStartY)からマウスのカーソル位置まで直線を描画するのに、以下のようなコードで直線を描画してみました。マウスを動かすたびに直線を更新したいので、SaveBitmapなる元の画像を呼び出しているのですが、マウスの動きを止めると直線が表示されません。マウスを止めた時にも直線を表示するためにはどうしたらいいでしょうか?

    Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        If Mode = 4 Then
            Dim RPen As New Pen(Color.Red)
            Dim ImageGraphics As Graphics = PictureBox1.CreateGraphics
            PictureBox1.Image = SaveBitmap
            ImageGraphics.DrawLine(RPen, BStartX, BStartY, e.X, e.Y)
            ImageGraphics.Dispose()
            RPen.Dispose()
        End If
    End Sub

編集 削除
やじゅ  2008-03-20 21:04:40  No: 139378  IP: 192.*.*.*

PictureBox1.Image = SaveBitmapとするより
画像を BackgroundImage に割り当ててみては
どうでしょうか

PictureBoxのパフォーマンスについて
http://dobon.net/vb/bbs/log3-28/17111.html
第3回「お絵かきソフト」
http://www.teu.ac.jp/chiit/~jsuzuki/doc/20050820/n03/index.html

編集 削除
きゅう  2008-03-20 23:47:23  No: 139379  IP: 192.*.*.*

BackgroundImageに割り当てる必要はありませんでしたが、参照先にあったようにPaintイベントを使うことによって解決しました。ありがとうございました。

編集 削除