高手都进来看一看!!

youyou1008 2003-06-03 11:57:37
我想问一下,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

...全文
14 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
enj1224 2003-06-05
  • 打赏
  • 举报
回复
大家知道如何将picturebox中的picture整体放大或者整体缩小如何可以实现吗?

关注。。。
previewer1024 2003-06-03
  • 打赏
  • 举报
回复
同意 rappercn(rapper) ( )
enj1224 2003-06-03
  • 打赏
  • 举报
回复
楼上说的对。image是轻量级的控件
rappercn 2003-06-03
  • 打赏
  • 举报
回复
picture可以作为容器使用,image不可以
youyou1008 2003-06-03
  • 打赏
  • 举报
回复
大家知道如何将picturebox中的picture整体放大或者整体缩小如何可以实现吗?
道素 2003-06-03
  • 打赏
  • 举报
回复
我是这样理解的不知道对不对
image控件仅仅相当于picturebox的image属性
它比pic省资源,它不是容器,没有窗口句柄(不是窗口)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧