VB.net关于绘图的问题!

来源:百度知道 编辑:UC知道 时间:2024/05/25 07:44:28
我的form1.vb的内如如下:
Public Class Form1
Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
Dim mousePoint As New Point(e.X, e.Y)
mxx = mousePoint.X
myy = mousePoint.Y
End Sub
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
Dim mousePoint As New Point(e.X, e.Y)
If mousePoint.X - mxx <> 0 And mousePoint.Y - myy <> 0 Then g1.Clear(PictureBox1.BackColor)
If mxx <> 0 Or myy <> 0 Then g1.DrawRectangle(Pens.Red, mxx, myy, mousePoint.X - mxx, mousePoint.Y - myy)
End Sub
Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
mxx = 0
myy = 0
g1.Dispose()

你的 g1 在你第一次 执行 mousemove 是已经销毁掉了
第二次执行 mousemove g1会出现 未初始化错误

再说你的程序 mousePoint.X - mxx, mousePoint.Y - myy
这两个值有可能为负值 负值可以作为矩形的宽高吗?(我没试过!)

是你的g1.Dispose()和p1.Dispose()错了,当你抬起鼠标时,的确是释放了资源。不过你不能移动鼠标,移动鼠标就会进行PictureBox1.MouseMove事件。试问,你已经释放了资源怎么能用g1这个变量呢。