PictureBoxes and how they are NOT transparent

Pictureboxes in .NET cannot be made transparent. It doesn't matter what convincing color or picture you've added.
Check out the three pictures below.

The first is two GIF pictures in pictureboxes on a blank form. The second is two GIF pictures with their backcolors set to Color.Transparent and overlaid on a form with a background image. The third is two GIF pictures with their backcolors set to Color.Transparent and placed over another picturebox.
Of course, the last one is not actually transparent - the pictureboxes in .NET do not have true transparency.

For game purposes, using controls isn't very efficient, but good for beginners. There comes a time, however, when beginners have to branch out to more complex things... one of which is GDI+!
GDI+ will allow you to do transparencies more efficiently, once you get an understanding of how it works.

First, we'll start the demonstration by recreating the first image.

Realize that, for most practical applications of a picturebox, you only deal with three properties of the picturebox:
Left, Top, and Image.
The Left and Top properties are mere Integers - Images require a bit more preparation.
When in the development environment, you can simply add your image to the picturebox at designtime and then just have .NET keep up with it.
Now that you cannot set your picturebox image, you need to move your image into the bin folder.
This image has to be loaded when the program starts.
So, we set up the declarations for our new "picturebox abstract":
    Dim AbsLT As Point  'The upper left coordinates for the images (Left and Top, or Location)
    Dim AbsImage As Bitmap  'The image inside of our abstract-picturebox.
        Point absLT;  //The upper-left corner's coordinates of our abstracted-picturebox.
        Bitmap absBmp;  //The picture that will be in this abstracted-picturebox.
Then, in the form's Load event, we put the actual pictures into these bitmap objects.
        AbsImage = New Bitmap("marshal.gif")
        'Put a picture of a marshal into the abstract-picturebox!
            absBmp = new Bitmap("marshal.gif");
            //Puts a picture into our abstracted-picturebox.
Now, of course, if you followed my Flickerless Display article, it should be easy to get everything working with the picturebox.
For starters, let's simply draw the picturebox in the Form's Paint event. The Paint event is the event that fires when the form is drawn (made visible).
    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        e.Graphics.DrawImage(AbsImage, AbsLT)
        'Draw our abstract picturebox.
    End Sub
        void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            e.Graphics.DrawImage(absBmp, absLT);
            //Draws the abstracted-picturebox.
        }

A little extra something that might be useful: a rectangle instead of a point will make the picture stretch to fill the rectangle.
    Dim AbsBounds As Rectangle   'The upper left coordinates for the images (Left and Top, or Location)
    Dim AbsImage As Bitmap  'The image inside of our abstract-picturebox.
        Rectangle absBounds;  //The upper-left corner's coordinates of our abstracted-picturebox.
        Bitmap absBmp;  //The picture that will be in this abstracted-picturebox.
And it's drawn exactly the same way:
    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        e.Graphics.DrawImage(AbsImage, AbsBounds)
        'Draw our abstract picturebox.
    End Sub
        void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            e.Graphics.DrawImage(absBmp, absBounds);
            //Draws the abstracted-picturebox.
        }