Here's a working example I knocked up (replace the bitmap and drawing code with your own, obviously):
'Offscreen bitmap
Dim offscreen As New Bitmap("c:\bmp205.bmp")
Private Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As IntPtr, ByVal xSrc As Integer, ByVal ySrc As Integer, ByVal dwRop As Integer) As Integer
Private Declare Function CreateCompatibleDC Lib "gdi32" Alias "CreateCompatibleDC" (ByVal hdc As IntPtr) As IntPtr
Private Declare Function DeleteDC Lib "gdi32" Alias "DeleteDC" (ByVal hdc As IntPtr) As Integer
Private Declare Function SelectObject Lib "gdi32" Alias "SelectObject" (ByVal hdc As IntPtr, ByVal hObject As IntPtr) As IntPtr
Private Const SRCCOPY As Integer = &HCC0020 ' (DWORD) dest = source
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Create the target graphics and get an hDC from it
Dim targetGraphics As Graphics = CreateGraphics()
Dim targethDC As IntPtr = targetGraphics.GetHdc()
'Create an offscreen dc and select our bitmap in to it
Dim offscreenhDC As IntPtr = CreateCompatibleDC(targethDC)
Dim oldObject As IntPtr
oldObject = SelectObject(offscreenhDC, offscreen.GetHbitmap())
'Blt a load of stuff (icons in this case) from it
Dim i As Integer
For i = 0 To 360 Step 24
BitBlt(targethDC, i, i, 24, 24, offscreenhDC, i, 0, SRCCOPY)
Next
'Select our bitmap out of the dc and delete it
SelectObject(offscreenhDC, oldObject)
DeleteDC(offscreenhDC)
'Release the target hDC
targetGraphics.ReleaseHdc(targethDC)
targetGraphics.Dispose()
End Sub