我有一张大图,要原样放到一个较小的picturebox里,所以需要加上滚动条,好方便查看。有什么办法吗?

解决方案 »

  1.   

    (1)setwindowlong,设置窗口样式,增加滚动条,同时拦截几个消息,使用scrollwindow滚动客户区。缺点是比较繁琐,但是这是windows最标准的办法。
    (2)使用一个第三方控件,来给picturebox增加滚动条,推荐这个方法。
    (3)使用VB的水平滚动条、垂直滚动条控件,并且嵌套2个picturebox,里面的原始大小,外面的两侧放置滚动条,并且使用move方法移动,来模拟,优点是方便,缺点是不美观。(参考:http://www.freevbcode.com/ShowCode.asp?ID=4783)
      

  2.   

    自己添加滚动条(垂直、水平)
    1、取得图片的大小(宽*高)。
    2、取得图片框的大小。
    3、设置水平滚动条的最大值为图片的宽,垂直滚动条的最大值为图片的高。
    3、点击滚动条来修改位置,相应的使用BitBlt来移动图片。
      

  3.   

    小picturebox +大picturebox+滚动条
    用小picturebox做大picturebox的容器,然后用滚动条移动大picturebox,就可实现你要的结果。
      

  4.   


    Private Sub Form_Load()
        Picture1.Move 0, 0, 5000, 5000
        Set Picture2.Container = Picture1
        Picture2.Appearance = flat
        Picture2.AutoSize = True
        Picture2.Move 0, 0
        Picture2.Picture = LoadPicture("c:\1.jpg")
        VScroll1.Height = Picture1.Height
        VScroll1.Move Picture1.Left + Picture1.Width, Picture1.Top, 260, Picture1.Height
        HScroll1.Move Picture1.Left, Picture1.Top + Picture1.Height, Picture1.Width, 260
        VScroll1.Min = 0: VScroll1.Max = Picture2.Height - Picture1.Height
        VScroll1.LargeChange = 500: VScroll1.SmallChange = 100
        HScroll1.Min = 0: HScroll1.Max = Picture2.Width - Picture1.Width
        HScroll1.LargeChange = 500: HScroll1.SmallChange = 100
    End SubPrivate Sub HScroll1_Change()
        Picture2.Left = -HScroll1.Value
    End SubPrivate Sub HScroll1_Scroll()
        Picture2.Left = -HScroll1.Value
    End SubPrivate Sub VScroll1_Change()
        Picture2.Top = -VScroll1.Value
    End SubPrivate Sub VScroll1_Scroll()
        Picture2.Top = -VScroll1.Value
    End Sub
      

  5.   


    Private Sub Form_Load()
        Picture1.Move 0, 0, 5000, 5000
        Set Picture2.Container = Picture1
        Picture2.Appearance = flat
        Picture2.AutoSize = True
        Picture2.Move 0, 0
        Picture2.Picture = LoadPicture("c:\1.jpg")
        VScroll1.Move Picture1.Left + Picture1.Width, Picture1.Top, 260, Picture1.Height
        HScroll1.Move Picture1.Left, Picture1.Top + Picture1.Height, Picture1.Width, 260
        VScroll1.Min = 0: VScroll1.Max = Picture2.Height - Picture1.Height
        VScroll1.LargeChange = 500: VScroll1.SmallChange = 100
        HScroll1.Min = 0: HScroll1.Max = Picture2.Width - Picture1.Width
        HScroll1.LargeChange = 500: HScroll1.SmallChange = 100
    End SubPrivate Sub HScroll1_Change()
        Picture2.Left = -HScroll1.Value
    End SubPrivate Sub HScroll1_Scroll()
        Picture2.Left = -HScroll1.Value
    End SubPrivate Sub VScroll1_Change()
        Picture2.Top = -VScroll1.Value
    End SubPrivate Sub VScroll1_Scroll()
        Picture2.Top = -VScroll1.Value
    End Sub
      

  6.   

    我在1楼给你代码了啊。
    http://www.freevbcode.com/ShowCode.asp?ID=4783