有没有想过如何模仿vb6中的Image控件属性拉伸? 这段代码可以解决问题...
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
======要使用这个... =======
首先将代码复制到模块或项目的其他位置,然后...
AutosizeImage(Trim('" Image file path "'), '" picture control here "', PictureBoxSizeMode.StretchImage)
那里有...:D
From: https://bytes.com/topic/visual-basic-net/insights/918594-stretch-image-fit-picturebox-runtime
本文介绍了一种在VB.NET中实现图片自动缩放至PictureBox控件大小的方法,通过计算原始图片与目标区域的比例,确保图片能完美适配且不失真。
4346

被折叠的 条评论
为什么被折叠?



