vb(2) picturebox、hscrollbar、vscrollbar实现滚动浏览

来源:互联网 发布:淘宝无线店铺网址 编辑:程序博客网 时间:2024/05/18 05:52

'利用picturebox的autoredraw、autosize 属性配合hscrollbar、vsrcrollbar实现滚动浏览

'2个picturebox控件 1个作为容器、1个作为显示

‘1个加载菜单项  1个hscrollbar 1个vscrollbar

Private Sub Form_Load()

  HScroll.Visible = False
  VScroll.Visible = False
  HScroll.Height = 300
  VScroll.Width = 300
End Sub


Private Sub Form_Resize()
  With PicBox
    .Left = 0
    .Top = 0
    .Height = Me.ScaleHeight
    .Width = Me.ScaleWidth
  End With
  Call PicShow_Resize
End Sub


Private Sub HScroll_Change()
  PicShow.Left = -HScroll.Value
End Sub
Private Sub VScroll_Change()
  PicShow.Top = -VScroll.Value
End Sub


Private Sub mnu加载图片_Click()
  cdg.Filter = "加载图片|*.jpg"
  cdg.ShowOpen
  If cdg.FileName <> "" Then
     PicShow.Picture = LoadPicture(cdg.FileName)
  End If

End Sub


Private Sub PicShow_Resize()
  On Error Resume Next
  With PicShow
    .Left = 0
    .Top = 0
  End With
  HScroll.Min = 0
  HScroll.Value = 0
  HScroll.Max = PicShow.Width - PicBox.Width
  VScroll.Min = 0
  VScroll.Value = 0
  VScroll.Max = PicShow.Height - PicBox.Height
  If HScroll.Max <= 0 Then
     HScroll.Visible = False
  Else
     HScroll.Max = IIf(VScroll.Max > 0, HScroll.Max + VScroll.Width, HScroll.Max)
     HScroll.Width = IIf(VScroll.Max > 0, PicBox.Width - VScroll.Width, PicBox.Width)
     HScroll.LargeChange = HScroll.Max / 10
     HScroll.SmallChange = HScroll.Max / 20
     'HScroll.Move 0, PicBox.Height - HScroll.Height
     HScroll.Left = 0
     HScroll.Top = PicBox.Height - HScroll.Height
     HScroll.Visible = True
  End If
  
  If VScroll.Max <= 0 Then
     VScroll.Visible = False
  Else
     VScroll.Max = IIf(HScroll.Max > 0, VScroll.Max + HScroll.Height, VScroll.Max)
     VScroll.Height = IIf(HScroll.Max > 0, PicBox.Height - HScroll.Height, PicBox.Height)
     VScroll.LargeChange = VScroll.Max / 10
     VScroll.SmallChange = VScroll.Max / 20
     VScroll.Move PicBox.Width - VScroll.Width, 0
     VScroll.Visible = True
  End If
  
  PicBox.Width = IIf(VScroll.Max > 0, PicBox.Width - VScroll.Width, PicBox.Width)
  PicBox.Height = IIf(HScroll.Max > 0, PicBox.Height - HScroll.Height, PicBox.Height)
  
  Debug.Print PicBox.Height
  Debug.Print HScroll.Top; HScroll.Max
End Sub

0 0