Veronica, che niente niente vieni da asp?

guardati questo modulo e vedi cosa sbagli, vedrai che sarà un ottimo esercizio...

(fai tasto dx su progetto-> aggiungi-> nuovo elemento-> modulo)
codice:
Imports System.Drawing.Drawing2D
Imports System.IO
Imports System.Drawing.Imaging

Module ImageExtender
    Sub New()
    End Sub
    <System.Runtime.CompilerServices.Extension()> _
    Public Function ResizeImage(Image As Image, Width As Integer, Height As Integer) As Image
        Dim widthImage As Integer = Image.Width
        Dim heightImage As Integer = Image.Height
        If widthImage > Width OrElse heightImage > Height Then
            Image.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipX)
            Image.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipX)

            Dim ratio As Single = 0
            If widthImage < heightImage Then
                ratio = CSng(widthImage) / CSng(heightImage)
                widthImage = Width
                heightImage = Convert.ToInt32(Math.Round(CSng(widthImage) / ratio))
            Else
                ratio = CSng(heightImage) / CSng(widthImage)
                heightImage = Height
                widthImage = Convert.ToInt32(Math.Round(CSng(heightImage) / ratio))
            End If
            Return Image.GetThumbnailImage(widthImage, heightImage, Nothing, IntPtr.Zero)
        End If
        Return Image
    End Function

    <System.Runtime.CompilerServices.Extension()> _
    Public Function CropImage(Image As Image, Width As Integer, Height As Integer, X As Integer, Y As Integer, Imageformat As ImageFormat, _
  PixelFormat As PixelFormat) As Image
        Dim result As Image
        Dim ms As MemoryStream = Nothing
        Try
            If Image.Height < Height Then
                Height = Image.Height
            End If

            If Image.Width < Width Then
                Width = Image.Width
            End If
            Dim ImageTemp As New Bitmap(Width, Height, PixelFormat)
            ImageTemp.SetResolution(72, 72)
            Dim graphic As Graphics = Graphics.FromImage(ImageTemp)
            graphic.SmoothingMode = SmoothingMode.AntiAlias
            graphic.InterpolationMode = InterpolationMode.HighQualityBicubic
            graphic.PixelOffsetMode = PixelOffsetMode.HighQuality
            graphic.DrawImage(Image, New Rectangle(0, 0, Width, Height), X, Y, Width, Height, _
             GraphicsUnit.Pixel)
            ms = New MemoryStream()
            ImageTemp.Save(ms, Imageformat)
            Image.Dispose()
            ImageTemp.Dispose()
            graphic.Dispose()
            result = Image.FromStream(ms)

            Return result
        Catch er As Exception
            Throw New Exception(er.Message)
        End Try
    End Function

    <System.Runtime.CompilerServices.Extension()> _
    Public Function CropImage(Image As Image, Width As Integer, Height As Integer, X As Integer, Y As Integer) As Image
        Return Image.CropImage(Width, Height, X, Y, ImageFormat.Bmp, PixelFormat.Format24bppRgb)
    End Function

    <System.Runtime.CompilerServices.Extension()> _
    Public Function ResizeAndCropCenter(image As Image, width As Integer, height As Integer) As Image
        Dim result As Image = image.ResizeImage(width, height)
        Dim x As Integer = If(result.Width > result.Height, (result.Width - width) / 2, 0)
        Dim y As Integer = If(result.Width < result.Height, (result.Height - height) / 2, 0)
        Return result.CropImage(width, height, x, y)
    End Function
End Module
e si usa così :
codice:
Image.FromFile("C:\cartella\immagine.png").ResizeAndCropCenter(500, 376).Save("immagineRidimensionata.jpg")
'che equivale a
Dim immagineOriginale = Image.FromFile("C:\cartella\immagine.png")
        Dim NuovaImmagineRidimensionata = immagineOriginale.ResizeAndCropCenter(500, 376)
        NuovaImmagineRidimensionata.Save("immagineRidimensionata.jpg")