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
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
BackgroundImageに割り当てる必要はありませんでしたが、参照先にあったようにPaintイベントを使うことによって解決しました。ありがとうございました。
編集 削除