读书人

鼠标画直线解决办法

发布时间: 2012-01-05 22:36:54 作者: rapoo

鼠标画直线
我想用VB.net写一个画直线的类
Imports System.Drawing
Imports System.Drawing.Drawing2D
Public Class Form1
Dim startPoint As Point
Dim endPoint As Point
Dim isMouseDown As Boolean = False
Private Sub pctbox_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pctbox.MouseDown
isMouseDown = True
startPoint.X = e.X
startPoint.Y = e.Y
End Sub
Private Sub pctbox_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pctbox.MouseMove
Dim bmp As New Bitmap(pctbox.ClientSize.Width, pctbox.ClientSize.Height)
If isMouseDown Then
endPoint.X = e.X
endPoint.Y = e.Y
Dim mygraphics As Graphics = Graphics.FromImage(bmp)
mygraphics.DrawLine(Pens.Black, startPoint, endPoint)
pctbox.Image = bmp
End If
End Sub
Private Sub pctbox_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pctbox.MouseUp
isMouseDown = False
End Sub
End Class

但是这个只能画一条,当画另一条时,第一条就删掉了
怎么才能画多条???
在线等待中
注:pctbox是picturebox控件

[解决办法]
你试一下这个:我刚刚改的:

Imports System.Drawing
Imports System.Drawing.Drawing2D
Public Class Form1
Dim _GraphicPic As Graphics
Dim startPoint As Point
Dim endPoint As Point
Dim isMouseDown As Boolean = False
Private Sub pctbox_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Pctbox.MouseDown
isMouseDown = True
startPoint.X = e.X
startPoint.Y = e.Y
End Sub
Private Sub pctbox_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Pctbox.MouseMove

If isMouseDown Then
endPoint.X = e.X
endPoint.Y = e.Y


End If
End Sub
Private Sub pctbox_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Pctbox.MouseUp
_GraphicPic.DrawLine(Pens.Black, startPoint, endPoint)


isMouseDown = False
End Sub

Private Sub Pctbox_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Pctbox.Paint

End Sub


Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
_GraphicPic = Pctbox.CreateGraphics()
End Sub
End Class
[解决办法]
去我的博客看看,有源码的

http://blog.csdn.net/wzuomin/archive/2006/12/13/1441007.aspx

读书人网 >VB Dotnet

热点推荐