我已经编写了以下代码,但是有一个问题我不想弄清楚..我试图在鼠标点击的图片框中的图像上画一条简单的线。但是,调用paint方法但不绘制它,而是在我在图片框中滚动图片时绘制该点的线。请帮助
Private Sub picCurrentimage_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picCurrentimage.MouseDown
px = e.X
py = e.Y
highlightPic(px, py)
End Sub
Private Sub highlightPic(ByVal x1 As Integer, ByVal y1 As Integer)
haspoint = True
picCurrentimage.Invalidate()
picCurrentimage.Update()
End Sub
Private Sub picCurrentimage_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles picCurrentimage.Paint
If haspoint Then
Dim g As Graphics = picCurrentimage.CreateGraphics
Dim r As Rectangle = New Rectangle(px, py, 600, 10)
Dim pen As Pen = New Pen(Color.FromArgb(128, 32, 100, 200), 1)
Dim b As Brush = New SolidBrush(pen.Color)
g.FillRectangle(b, r)
End If
End Sub
答案 0 :(得分:1)
尝试使用以下修改替换您的代码:
Private Sub highlightPic(ByVal x1 As Integer, ByVal y1 As Integer)
haspoint = True
picCurrentimage.Refresh() 'this do both of your lines in one
End Sub
Private Sub picCurrentimage_Paint(ByVal sender As Object, _
ByVal e As PaintEventArgs) _
Handles picCurrentimage.Paint
If haspoint Then
Dim g As Graphics = e.Graphics
Dim r As Rectangle = picCurrentimage.ClientRectangle
Dim b As Brush = New SolidBrush(Color.FromArgb(128, 32, 100, 200))
g.FillRectangle(b, r)
b.Dispose
End If
End Sub