
我要做一个VB小程序,其中有一个picture控件,载入的图片超过了控件的垂直长度,请问怎么和垂直滚动条结合
1楼的朋友,可以详细一点说明吗?我加分了。2楼的朋友,你的办法需要有command控件,但是我的图片是在属性中加载的。3楼的朋友,我不太懂…… 展开
最简单的应该是用Picture当作容器,里面放置一个Image来显示图像,以下代码需要在窗口中放置标签、 文本框、按钮、标准对话框控件、Picuture各一个(其中Picutre控件中需要放置一个Image和一个垂直滚动条,如下图),然后使用下列代码即可:
Private Sub Command1_Click()
Dim oPic As StdPicture
With CommonDialog1
.Filter = "所有图片文件(*.jpg;*.gif;*.bmp;*.emf;)|*.jpg;*.gif;*.bmp;*.emf;"
.ShowOpen
If .FileName <> "" Then
Text1 = .FileName
Set oPic = LoadPicture(.FileName)
If Not oPic Is Nothing Then
Image1.Picture = oPic
Image1.Left = 0
Image1.Top = 0
If Image1.Height > Picture1.ScaleHeight Then
VScroll1.Max = (Image1.Height - Picture1.ScaleHeight) / 10
VScroll1.Value = 1
VScroll1.Value = 0
VScroll1.Visible = True
VScroll1.Refresh
Else
VScroll1.Visible = False
End If
End If
End If
End With
End Sub
Private Sub Form_Load()
Text1.Locked = True
Picture1.ScaleMode = vbPixels
Image1.Left = 0
Image1.Top = 0
With VScroll1
.Left = Picture1.ScaleWidth - .Width
.Top = 0
.Height = Picture1.ScaleHeight
End With
End Sub
Private Sub VScroll1_Change()
If Image1.Picture <> 0 Then
Image1.Top = -VScroll1.Value * 10
VScroll1.LargeChange = 20
End If
End Sub
但是我们可以借助其他控件来实现,其方法是:
在你放置Picture1控件的位置首先放置一个Frame1框架,首先将框架的Height属性调整到和图片的高低一样,在框架中放置
两个picturebox,竖滚动条Scroll1,横滚动条Scroll2
一个picturebox作为容器,另一个picturebox和那两个滚动条放到前一个picturebox里面,然后再输入以下代码
Private Sub Scroll1_Change() '滚动条操作
Picture2.Top = -Scroll1.Value
End Sub
Private Sub Scroll1_Scroll()
Picture2.Top = -Scroll1.Value
End Sub
Private Sub Scroll2_Change()
Picture2.Left = -Scroll2.Value
End Sub
Private Sub Scroll2_Scroll()
Picture2.Left = -Scroll2.Value
End Sub
在form_load中再写上这些
With Scroll1
.Height = Picture1.Height
End With
With Scroll2
.Width = Picture1.Width
End With
其他属性自己再设置一下就OK了