Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Top Posters

Who's Online (0)

Powered by Vanilla. Made with Bootstrap.
How to draw on your form!!!!

  • Public Class Form1
    ' True while we are drawing the new line.
    Private m_Drawing As Boolean

    ' Buffer for erasing rubberband lines.
    Private m_BufferBitmap As Bitmap
    Private m_BufferGraphics As Graphics

    ' The mouse position.
    Private m_X1 As Integer
    Private m_Y1 As Integer
    Private m_X2 As Integer
    Private m_Y2 As Integer

    ' Start drawing a rubberband line.
    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
    ' Do nothing if this isn'tthe left mouse button.
    If e.Button <> MouseButtons.Left Then Exit Sub
    m_Drawing = True

    ' Save a snapshot of the form.
    SaveSnapshot()

    ' Save the current mouse position.
    m_X1 = e.X
    m_X2 = e.X
    m_Y1 = e.Y
    m_Y2 = e.Y
    End Sub

    Private Sub SaveSnapshot()
    Dim new_bitmap As Bitmap

    ' Make a new bitmap that fits the form.
    new_bitmap = New Bitmap(Me.Size.Width, Me.Size.Height, Me.CreateGraphics())
    m_BufferGraphics = Graphics.FromImage(new_bitmap)

    ' Clear the new bitmap.
    m_BufferGraphics.Clear(Me.BackColor)

    ' Copy the existing bitmap's contents into
    ' the new bitmap.
    If Not (m_BufferBitmap Is Nothing) Then
    m_BufferGraphics.DrawImage(m_BufferBitmap, 0, 0)
    End If

    ' Save the new bitmap and graphics objects.
    m_BufferBitmap = new_bitmap
    End Sub

    ' Continue drawing the rubberband line.
    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
    ' Do nothing if we're not drawing.
    If Not m_Drawing Then Exit Sub

    ' Save the new point.
    m_X2 = e.X
    m_Y2 = e.Y

    ' Erase the previous line.
    DrawForm(Me.CreateGraphics())

    ' Draw the new line directly on the form.
    Me.CreateGraphics().DrawLine( _
    Pens.Gray, m_X1, m_Y1, m_X2, m_Y2)
    End Sub

    ' Redraw the saved buffer.
    Private Sub DrawForm(ByVal gr As Graphics)
    If Not (m_BufferBitmap Is Nothing) Then gr.DrawImage(m_BufferBitmap, 0, 0)
    End Sub

    ' Finish drawing the new line.
    Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
    ' Do nothing if we're not drawing.
    If Not m_Drawing Then Exit Sub
    m_Drawing = False

    ' Save the new point.
    m_X2 = e.X
    m_Y2 = e.Y

    ' Draw the new line permanently on the buffer.
    m_BufferGraphics.DrawLine( _
    Pens.Blue, m_X1, m_Y1, m_X2, m_Y2)

    ' Redraw to show the new line.
    DrawForm(Me.CreateGraphics())
    End Sub

    ' Redraw the form.
    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    DrawForm(e.Graphics)
    End Sub
    End Class


    You can now draw on your form like a piece-o-paper :)
    Anytime! Anywhere!

    http://img202.imageshack.us/img202/3962/drawerscreen.png
  • Xin
    Posts: 3,251
    Good little tutorial hex keep them coming :)
    Xin
  • Bursihido
    Posts: 406
    good job :)
  • Thanks guys ^^
  • Sh3llc0d3
    Posts: 1,910
    Nice job PlatinumHex, great little program, hope to see lots more :)
    S-P