高手都进来看一看!!
我想问一下,image控件和picturebox控件的主要区别在哪?
分别适用于什么场合?
我碰到过可以用两个picturebox控件和一个image控件来缩放image中的picture,但是为什么我将image 控件用第三个picturebox代替,却达不到这样的效果,为什么呢?
大家可以看看下面的程序!
option Explicit
Private ScrollVert As Boolean, ScrollHor As Boolean
Private ZoomFact As Single
Private IsRightButt As Boolean
Const ZFactorC As Byte = 100 ' percentage increase
Const ScrollFactorC As Byte = 20 ' used to calculate scroll max and change (can play with this value)
Private Sub cmdExit_Click()
Unload Me
End Sub
Private Sub Form_Load()
ScrollVert = False: ScrollHor = False
ZoomFact = ZFactorC
ZoomPicture
End Sub
Private Sub ZoomPicture()
Dim SizeX As Single, SizeY As Single
Dim Ratio As Single
Dim Wdth As Single, Hght As Single
Screen.MousePointer = vbHourglass
Wdth = PicScroll.ScaleWidth
Hght = PicScroll.ScaleHeight
Ratio = ZoomFact / 100
' redimension original image
SizeX = ImgOrig.Width * Ratio
SizeY = ImgOrig.Height * Ratio
ScrollHor = IIf(SizeX > Wdth, True, False)
ScrollVert = IIf(SizeY > Hght, True, False)
PicZoom.Cls
PicZoom.Move 0, 0, SizeX, SizeY
PicZoom.PaintPicture ImgOrig.Picture, 0, 0, SizeX, SizeY
' adjust scroll bar
If ScrollVert Then
VSImage.Visible = True
VSImage.Min = 0
VSImage.Max = (PicZoom.ScaleHeight - PicScroll.ScaleHeight) / ScrollFactorC
VSImage.SmallChange = ScrollFactorC
VSImage.LargeChange = PicZoom.ScaleHeight / ScrollFactorC
VSImage.Value = VSImage.Min
Else
VSImage.Visible = False
End If
If ScrollHor Then
HSImage.Visible = True
HSImage.Min = 0
HSImage.Max = (PicZoom.ScaleWidth - PicScroll.ScaleWidth) / ScrollFactorC
HSImage.SmallChange = ScrollFactorC
HSImage.LargeChange = PicZoom.ScaleWidth / ScrollFactorC
HSImage.Value = HSImage.Min
Else
HSImage.Visible = False
End If
Screen.MousePointer = vbDefault
End Sub
Private Sub HSImage_Change()
If ScrollHor Then
PicZoom.Left = -HSImage.Value * ScrollFactorC
End If
End Sub
Private Sub piczoom_Click()
If IsRightButt Then
ZoomFact = ZoomFact + ZFactorC
Else
ZoomFact = IIf(ZoomFact <= ZFactorC, ZFactorC, ZoomFact - ZFactorC)
End If
ZoomPicture
End Sub
Private Sub piczoom_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
IsRightButt = True
Else
IsRightButt = False
End If
End Sub
Private Sub VSImage_Change()
If ScrollVert Then
PicZoom.Top = -VSImage.Value * ScrollFactorC
End If
End Sub