El código siguiente recorta una imagen. Vamos a enrar a usar el objeto Graphics y también tocaremos los Stream (herramienta muy interesante para guardar imágenes).
Â
Private Function recortaImagen(ByVal imagen As Image, ByVal posicion As Point, ByVal tamaño As Size) As Image
     ‘Creamos un objeto bitmap con resolución 72 pÃxeles por pulgada y tamaño el pasado como argumento
     Dim bmFoto As Bitmap = New Bitmap(tamaño.Width, tamaño.Height)
     bmFoto.SetResolution(72, 72)
     ‘Creamos un objeto Graphics y le asignamos el Bitmap creado
     Dim grFoto As Graphics = Graphics.FromImage(bmFoto)
     ‘Le proporcionamos las siguientes propiedades
     grFoto.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
     grFoto.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
     grFoto.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
     ‘Con esto recortamos la imagen con tamaño el dado
     grFoto.DrawImage(imagen, New Rectangle(posicion, tamaño), New Rectangle(New Point(200, 200), tamaño), _ GraphicsUnit.Pixel)
     ‘Ahora lo guardamos en un MemoryStream para guardar los cambios
     Dim mm As System.IO.MemoryStream = New System.IO.MemoryStream
     bmFoto.Save(mm, System.Drawing.Imaging.ImageFormat.Jpeg)
     ‘Liberamos los objetos usados
     imagen.Dispose()
     bmFoto.Dispose()
     grFoto.Dispose()
     ‘Devolvemos el valor
     Dim img As Image = New Bitmap(mm)
     Return img
End Function
Ejemplo codigop