I am experimenting with making a game focused on crafting. At the moment, i have a 100x100 tileset with four sprites. Background, character, tree, tree stump.

It creates 8 trees and places them randomly on the form, move the character over the tree and press space to chop it down (change it to the stump image)

But every time you move the whole screen flickers. It MIGHT be just my computer, but I have a feeling it's the redraw. Not sure how to lower flickering.

Code:
Imports System.Drawing

Public Class Form1

    Dim G As Graphics
    Dim BBG As Graphics
    Dim sRect As Rectangle
    Dim dRect As Rectangle
    Dim bmap As Bitmap
    Dim BB As Bitmap
    Dim NumberOfTrees As Integer = 8
    Dim GuyY As Integer = 0
    Dim GuyX As Integer = 0
    Dim Trees As Integer
    Dim X2 As Integer = Nothing
    Dim Y2 As Integer = Nothing
    Dim XArray(NumberOfTrees - 1) As Integer
    Dim YArray(NumberOfTrees - 1) As Integer
    Dim Stumps(NumberOfTrees - 1) As Integer

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

        Select Case e.KeyCode
            Case Keys.W
                GuyY = GuyY - 50
            Case Keys.A
                GuyX = GuyX - 50
            Case Keys.S
                GuyY = GuyY + 50
            Case Keys.D
                GuyX = GuyX + 50
            Case Keys.Space
                ChopTree()
        End Select

        DrawAll()
        DrawTrees()

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        bmap = New Bitmap(PictureBox1.Image)
        G = Me.CreateGraphics
        BB = New Bitmap(Me.Width, Me.Height)

        For Me.Trees = 0 To NumberOfTrees - 1
            Me.XArray(Me.Trees) = Int(Rnd() * 9) * 50
            Me.YArray(Me.Trees) = Int(Rnd() * 9) * 50
        Next

        DrawAll()
        DrawTrees()

    End Sub

    Private Sub ChopTree()

        For Me.Trees = 0 To NumberOfTrees - 1
            If GuyX = Me.XArray(Me.Trees) Then
                If GuyY = Me.YArray(Me.Trees) Then
                    Me.Stumps(Me.Trees) = 1
                End If
            End If
        Next

    End Sub

    Private Sub DrawAll()

        Dim X, Y As Integer

        For X = 0 To 9
            For Y = 0 To 9
                sRect = New Rectangle(0, 0, 50, 50)
                dRect = New Rectangle(X * 50, Y * 50, 50, 50)
                G.DrawImage(bmap, dRect, sRect, GraphicsUnit.Pixel)
            Next
        Next

        For Me.Trees = 0 To NumberOfTrees - 1

            If Me.Stumps(Me.Trees) = 0 Then
                sRect = New Rectangle(50, 0, 50, 50)
                G.DrawImage(bmap, Me.XArray(Me.Trees), Me.YArray(Me.Trees), sRect, GraphicsUnit.Pixel)
                G = (Graphics.FromImage(BB))
                BBG = Me.CreateGraphics
                BBG.DrawImage(BB, 0, 0, Me.Width, Me.Height)
            End If

            If Me.Stumps(Me.Trees) = 1 Then
                sRect = New Rectangle(0, 50, 50, 50)
                G.DrawImage(bmap, Me.XArray(Me.Trees), Me.YArray(Me.Trees), sRect, GraphicsUnit.Pixel)
                G = (Graphics.FromImage(BB))
                BBG = Me.CreateGraphics
                BBG.DrawImage(BB, 0, 0, Me.Width, Me.Height)
            End If
        Next

        bmap.MakeTransparent(Color.Fuchsia)
        sRect = New Rectangle(50, 50, 50, 50)
        G.DrawImage(bmap, GuyX, GuyY, sRect, GraphicsUnit.Pixel)

        G = (Graphics.FromImage(BB))
        BBG = Me.CreateGraphics
        BBG.DrawImage(BB, 0, 0, Me.Width, Me.Height)

    End Sub

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

        DrawAll()
        DrawTrees()

    End Sub

    Private Sub DrawTrees()


    End Sub

End Class