I have already made an algorithm to do this, and here it is:

Public Shared Function ZoomBitmap(ByVal bmp As Bitmap, ByVal zoom As Integer) As Bitmap Dim rbmp As New Bitmap(bmp.Width * zoom, bmp.Height * zoom) Dim x As Integer Dim y As Integer Dim x2 As Integer Dim y2 As Integer Dim x2in As Integer Dim y2in As Integer Do Dim cl As Color cl = bmp.GetPixel(x, y) x2 = x2in y2 = y2in Do rbmp.SetPixel(x2, y2, cl) x2 += 1 If x2 = zoom + x2in Then x2 = x2in y2 += 1 End If If y2 = zoom + y2in Then x2in += zoom If x2in = bmp.Width * zoom Then x2in = 0 y2in += zoom End If Exit Do End If Loop x += 1 If x = bmp.Width Then x = 0 y += 1 End If If y = bmp.Height Then Exit Do End If Loop Return rbmp End Function

This algorithm does do what I just described, with one problem: it is SLOW! It takes about 10 seconds to resize a normal sized image. I know of programs that do this very thing in a fraction of the time. If you can think of any ways to improve this algorithm, or if you have and algorithm to do this efficiently, or if you know of a function already in the .NET framework that can do this, please let me know.