Stretch image to fit pictureBox at runtime

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Richard Alvarez
    New Member
    • Apr 2011
    • 32

    Stretch image to fit pictureBox at runtime

    Ever wonder how to imitate the Image control property stretch in vb6? This piece of code will do the trick...
    Code:
    Public Sub AutosizeImage(ByVal ImagePath As String, ByVal picBox As PictureBox, Optional ByVal pSizeMode As PictureBoxSizeMode = PictureBoxSizeMode.CenterImage)
            Try
                picBox.Image = Nothing
                picBox.SizeMode = pSizeMode
                If System.IO.File.Exists(ImagePath) Then
                    Dim imgOrg As Bitmap
                    Dim imgShow As Bitmap
                    Dim g As Graphics
                    Dim divideBy, divideByH, divideByW As Double
                    imgOrg = DirectCast(Bitmap.FromFile(ImagePath), Bitmap)
    
                    divideByW = imgOrg.Width / picBox.Width
                    divideByH = imgOrg.Height / picBox.Height
                    If divideByW > 1 Or divideByH > 1 Then
                        If divideByW > divideByH Then
                            divideBy = divideByW
                        Else
                            divideBy = divideByH
                        End If
    
                        imgShow = New Bitmap(CInt(CDbl(imgOrg.Width) / divideBy), CInt(CDbl(imgOrg.Height) / divideBy))
                        imgShow.SetResolution(imgOrg.HorizontalResolution, imgOrg.VerticalResolution)
                        g = Graphics.FromImage(imgShow)
                        g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
                        g.DrawImage(imgOrg, New Rectangle(0, 0, CInt(CDbl(imgOrg.Width) / divideBy), CInt(CDbl(imgOrg.Height) / divideBy)), 0, 0, imgOrg.Width, imgOrg.Height, GraphicsUnit.Pixel)
                        g.Dispose()
                    Else
                        imgShow = New Bitmap(imgOrg.Width, imgOrg.Height)
                        imgShow.SetResolution(imgOrg.HorizontalResolution, imgOrg.VerticalResolution)
                        g = Graphics.FromImage(imgShow)
                        g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
                        g.DrawImage(imgOrg, New Rectangle(0, 0, imgOrg.Width, imgOrg.Height), 0, 0, imgOrg.Width, imgOrg.Height, GraphicsUnit.Pixel)
                        g.Dispose()
                    End If
                    imgOrg.Dispose()
    
                    picBox.Image = imgShow
                Else
                    picBox.Image = Nothing
                End If
    
    
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
    
        End Sub
    ====== To use this...=======
    first copy the code in a module or somewhere else in your project then...
    Code:
    AutosizeImage(Trim('" Image file path "'), '" picture control here "', PictureBoxSizeMode.StretchImage)
    There you have it... :D
    Attached Files
Working...