vb如何把image图片缩放后给picturebox但是picturebox尺寸不会还原
意思就是。image的Stretch=True然后缩好图片后。转移到PictureBox但前提是,转移过去后,PictureBox显示的图片不是缩放前的大小,而是跟ima...
意思就是。image的Stretch = True然后缩好图片后。转移到PictureBox
但前提是,转移过去后,PictureBox显示的图片不是缩放前的大小,而是跟image一样大。
还有,如果你们想用PaintPicture解决,那必须得保证,PictureBox的边框,还有高度什么的得跟缩放后image一样大小。 展开
但前提是,转移过去后,PictureBox显示的图片不是缩放前的大小,而是跟image一样大。
还有,如果你们想用PaintPicture解决,那必须得保证,PictureBox的边框,还有高度什么的得跟缩放后image一样大小。 展开
2个回答
展开全部
PictureBox(图片框)是Visual Basic中用来显示图形的基本控件之一,用于在窗体指定位置显示图形信息,它支持多种格式的图形文件,包括位图文件(*.bmp,*.dib)、图标文件(*.ico)、光标文件(*.cur)、图元文件(*.wmf,*.emf),还有Internet 上流行的压缩位图格式的JPEG文件和GIF文件。最重要的功能是可以在它上面绘图。但是PictureBox只有自动适应图片大小的属性,而没有图片适应控件的属性。
原题要“把任意图片缩放到固定大小的PictureBox并保持图片原来的宽高比”,也就是加载以后图片不能变形。这样比较繁琐一些,但是效果很好,仅供你参考。
准备:在窗体上放置一个PictureBox控件一个Image控件,一个CommonDialog控件,一个Command控件。
代码如下:
Option Explicit
Private Sub Command1_Click()
CommonDialog1.Filter = "(图片文件)*.BMP;*.JPG;*.JPEG|*.BMP;*.JPG;*.JPEG" '用来选择图片
CommonDialog1.FilterIndex = 0
CommonDialog1.Action = 1
If CommonDialog1.FileName <> "" Then
Image1.Picture = LoadPicture(CommonDialog1.FileName) '图片加载到Pic2
End If
' Set Picture1.Picture = Image1.Picture
Picture1.PaintPicture Image1.Picture, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
End Sub
Private Sub Form_Load()
Picture1.AutoRedraw = True '重绘图片
Picture1.AutoSize = False '图片框大小不变
Picture1.Visible = True
Picture1.BackColor = RGB(0, 255, 0) '设置图片框背景颜色
Set Image1.Container = Picture1
Command1.Caption = "选择图片"
End Sub
该代码在VB6测试通过。
原题要“把任意图片缩放到固定大小的PictureBox并保持图片原来的宽高比”,也就是加载以后图片不能变形。这样比较繁琐一些,但是效果很好,仅供你参考。
准备:在窗体上放置一个PictureBox控件一个Image控件,一个CommonDialog控件,一个Command控件。
代码如下:
Option Explicit
Private Sub Command1_Click()
CommonDialog1.Filter = "(图片文件)*.BMP;*.JPG;*.JPEG|*.BMP;*.JPG;*.JPEG" '用来选择图片
CommonDialog1.FilterIndex = 0
CommonDialog1.Action = 1
If CommonDialog1.FileName <> "" Then
Image1.Picture = LoadPicture(CommonDialog1.FileName) '图片加载到Pic2
End If
' Set Picture1.Picture = Image1.Picture
Picture1.PaintPicture Image1.Picture, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
End Sub
Private Sub Form_Load()
Picture1.AutoRedraw = True '重绘图片
Picture1.AutoSize = False '图片框大小不变
Picture1.Visible = True
Picture1.BackColor = RGB(0, 255, 0) '设置图片框背景颜色
Set Image1.Container = Picture1
Command1.Caption = "选择图片"
End Sub
该代码在VB6测试通过。
展开全部
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Sub Command1_Click()
Me.AutoRedraw = False
Picture1.AutoRedraw = False
Picture1.BorderStyle = 0
picture1.Appearance=0
Me.Picture1.Width = Me.Image1.Width
Me.Picture1.Height = Me.Image1.Height
BitBlt Me.Picture1.hdc, 0, 0, Me.Image1.Width / Screen.TwipsPerPixelX, Me.Image1.Height / Screen.TwipsPerPixelY, Me.hdc, 0, 0, vbSrcCopy
End Sub
Private Sub Image1_Click()
Randomize
Image1.Width = Image1.Width + (Rnd * 200 - 200)
Image1.Height = Image1.Height + (Rnd * 200 - 200)
End Sub
窗体上就加一个图片框PictureBox(名字用默认值),一个图像框Image(名字用默认值),一个按钮(名字用默认值)Command
Private Sub Command1_Click()
Me.AutoRedraw = False
Picture1.AutoRedraw = False
Picture1.BorderStyle = 0
picture1.Appearance=0
Me.Picture1.Width = Me.Image1.Width
Me.Picture1.Height = Me.Image1.Height
BitBlt Me.Picture1.hdc, 0, 0, Me.Image1.Width / Screen.TwipsPerPixelX, Me.Image1.Height / Screen.TwipsPerPixelY, Me.hdc, 0, 0, vbSrcCopy
End Sub
Private Sub Image1_Click()
Randomize
Image1.Width = Image1.Width + (Rnd * 200 - 200)
Image1.Height = Image1.Height + (Rnd * 200 - 200)
End Sub
窗体上就加一个图片框PictureBox(名字用默认值),一个图像框Image(名字用默认值),一个按钮(名字用默认值)Command
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询