图片比picture控件大,怎么通过滚动条的移动而显示全图
(运行时控件大小不能改变)

解决方案 »

  1.   

    先做两个Picture 和滚动条一个任意大小,一个你设定的大小
    用:
    Public Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long根据滚动条的value值来拷贝相应区域的图片
      

  2.   

    用2个picture控件,一个做容器,一个放图片,加二个滚动条,垂直和水平
    Private Sub Form_Load()
        '将子图片框放置在父图片框的左上角
        Picture2.Top = 0
        Picture2.Left = 0
        '设置滚动条的最大值
        HScroll1.Max = Picture2.Width - Picture1.Width
        If Picture2.Width < Picture1.Width Then
        HScroll1.Visible = False
        End If
        VScroll1.Max = Picture2.Height - Picture1.Height
    End SubPrivate Sub vscroll1_change()
        Picture2.Top = -VScroll1.Value
    End SubPrivate Sub hscroll1_change()
        Picture2.Left = -HScroll1.Value
    End Sub
      

  3.   

    先设定滚动条的MAX属性,然后用滚动条的VALUE值来设置PICTUREBOX.LEFT或PICTUREBOX.TOP的值。
      

  4.   

    临时写了一个。
    把图片放到一个Image控件中,把Image控件放到Picture控件中,放一个水平滚动条和垂直滚动条。全部用缺省名称Private Sub Form_Load()
        Image1.Left = 0
        Image1.Top = 0
        
        HScroll1.Width = Picture1.Width
        HScroll1.Top = Picture1.Top + Picture1.Height
        HScroll1.Left = Picture1.Left
        HScroll1.Min = 0
        HScroll1.Max = Image1.Width \ Picture1.Width
        
        VScroll1.Height = Picture1.Height
        VScroll1.Left = Picture1.Left + Picture1.Width
        VScroll1.Top = Picture1.Top
        VScroll1.Min = 0
        VScroll1.Max = Image1.Height \ Picture1.Height
    End SubPrivate Sub HScroll1_Change()
        Image1.Left = -HScroll1.Value * Picture1.Width
    End SubPrivate Sub VScroll1_Change()
        Image1.Top = -VScroll1.Value * Picture1.Height
    End Sub