Freehand drawing with .Net Windows forms
Few days back, I got a requirement to implement Free Hand drawing in .Net. I searched a lot but I didn’t get any good solution, the one I found from code project was Invalidating the picture box every time. So today I got a solution, it not seems to be a perfect solution because Paint events occurs, we need to re-paint the whole lines again.
I am attaching the code here. I will update the post once I get some perfect solution for this.
Private m_Drawing As Boolean = False
Private m_List As List(Of Point) = Nothing
Private Sub MyPic_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyPic.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
m_Drawing = True
End If
End Sub
Private Sub MyPic_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyPic.MouseUp
If m_Drawing AndAlso m_List IsNot Nothing Then
If m_List.Count >= 2 Then
MyPic.CreateGraphics.DrawLines(New Pen(Color.Blue, 1), m_List.ToArray())
End If
m_Drawing = False
m_List.Clear()
End If
End Sub
Private Sub MyPic_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyPic.MouseMove
If m_List IsNot Nothing AndAlso m_Drawing Then
m_List.Add(e.Location)
End If
End Sub
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
m_List = New List(Of Point)
End Sub
Code is pretty self explanatory. So I am not putting any comments
