i build these code for try Tiled an image with speed(using the DIB's way is the faster API way):
Code:
Public Sub TilesImageDIB(ByRef SrcPictureBox As Control, ByRef DstPictureBox As Control, ByVal Width As Long, ByVal Height)
    Dim ImageData() As Byte
    Dim x As Long, y As Long
    
    On Error Resume Next
    If SrcPictureBox <> DstPictureBox Then DstPictureBox.Picture = Nothing
    'Now we fill up the bmi (Bitmap information variable) with all of the appropriate data
    bmi.bmHeader.bmSize = 40 'Size, in bytes, of the header (always 40)
    bmi.bmHeader.bmPlanes = 1 'Number of planes (always one)
    bmi.bmHeader.bmBitCount = 24 'Bits per pixel (always 24 for image processing)
    bmi.bmHeader.bmCompression = 0 'Compression: none or RLE (always zero)

    'Calculate the size of the bitmap type (in bytes)
    
    bmLen = Len(bm)

    'Get the picture box information from SrcPictureBox and put it into our 'bm' variable
    GetObject SrcPictureBox.Image, bmLen, bm
    
    'Build a correctly sized array.
    ReDim ImageData(0 To Width - 1, 0 To Height - 1)

    'Finish building the 'bmi' variable we want to pass to the GetDIBits call (the same variable we used above)
    bmi.bmHeader.bmWidth = bm.bmWidth
    bmi.bmHeader.bmHeight = bm.bmHeight

    'Now that we've completely filled up the 'bmi' variable, we use GetDIBits to take the data from SrcPictureBox and put it into the ImageData() array using the settings we specified in 'bmi'
    GetDIBits SrcPictureBox.hDC, SrcPictureBox.Image, 0, bm.bmHeight, ImageData(0, 0), bmi, 0
    
    For x = 0 To Width Step bm.bmWidth - 1
        For y = 0 To Height Step bm.bmHeight - 1
           GetDIBits SrcPictureBox.hDC, SrcPictureBox.Image, 0, bm.bmHeight, ImageData(x, y), bmi, 0
        Next y
    Next x
    If SrcPictureBox = DstPictureBox Then SrcPictureBox.Picture = Nothing
    'Now that we've built the temporary header, we use StretchDIBits to take the data from the ImageData() array and put it into SrcPictureBox using the settings specified in 'bmi' (the StretchDIBits call should be on one continuous line)
    StretchDIBits DstPictureBox.hDC, 0, 0, Width, Height, 0, 0, Width, Height, ImageData(0, 0), bmi, 0, vbSrcCopy

    'Since this doesn't automatically initialize AutoRedraw, we have to do it manually
    'Note: always keep AutoRedraw as 'True' when using DIB sections. Otherwise, you WILL get unpredictable results.
    If DstPictureBox.AutoRedraw = True Then
        DstPictureBox.Picture = DstPictureBox.Image
        DstPictureBox.Refresh
    End If
End Sub
but the result isn't correct. can anyone advice me?