PictureClip控件就是把一个图片均分成几个部分
比如,给Clip1指定一个Picture
然后设置Rows=3 Cols=3
共有9个子图片Private Sub Form_Click()
    Static i As Integer
    Image1.Picture = Clip1.GraphicCell(i)
    i = i + 1
    If i = 9 Then i = 0
End Sub

解决方案 »

  1.   

    实际上可能用Picture,Image控件就可以做出来了
    底层一点,可以考虑用BitBlt函数
      

  2.   

    如何在mdiform中将一幅图片作为背景,随着窗体大小,图片同时缩放。可利用PicClip控件实现。Private Sub MDIForm_Resize()
        Dim Ref As Single
        
        Ref = 26.46
        On Error Resume Next
        
        Me.MousePointer = 11
        
        PicClip1.Picture = Picture1.Picture 'LOAD 一个图片(自己看着办)
        
        PicClip1.ClipX = 0
        PicClip1.ClipY = 0
        
        PicClip1.ClipHeight = PicClip1.Picture.Height / Ref
        PicClip1.ClipWidth = PicClip1.Picture.Width / Ref
        
        PicClip1.StretchX = Me.ScaleWidth / Screen.TwipsPerPixelX
        PicClip1.StretchY = Me.ScaleHeight / Screen.TwipsPerPixelY
        
        Me.Picture = PicClip1.Clip
        
        Me.MousePointer = 0
    End Sub
      

  3.   

    PicClip和PictureClip好像是不同的控件是么?我在MSDN上好像看到过,不过在VB的object browser里没有,这两个该怎么区分啊?(我现在的这台机器上没有MSDN)。或者有没有谁做过能移动的标尺的啊?我这是有一个源码,是VB4做的,可是他的那个源码看不懂,很麻烦!
      

  4.   

    Clip1,PicClip1自己取的名字,类型是PictureClip,这个都分不清楚吗?
      

  5.   

    这么简单,也有点意思,给你写全了吧Option Explicit
    Dim FirstID As IntegerPrivate Sub Form_Load()
        PictureClip1.Rows = 3
        PictureClip1.Cols = 30
        
        Dim i As Integer
        Image1(0).Width = PictureClip1.CellWidth
        Image1(0).Height = PictureClip1.CellHeight
        Image1(0).Picture = PictureClip1.GraphicCell(0)
        For i = 1 To 9
            Load Image1(i)
            Image1(i).Left = Image1(i - 1).Left + Image1(i - 1).Width
            Image1(i).Top = Image1(i - 1).Top
            Image1(i).Picture = PictureClip1.GraphicCell(i)
            Image1(i).Visible = True
        Next i
        
        FirstID = 0
    End SubPrivate Sub CmdMoveLeft_Click()
        Dim i As Integer
        If FirstID = 21 Then
            Exit Sub
        End If
        
        FirstID = FirstID + 1
        
        For i = 0 To 9
            Image1(i).Picture = PictureClip1.GraphicCell(i + FirstID)
            Image1(i).Visible = True
        Next i
    End SubPrivate Sub CmdMoveRight_Click()
        Dim i As Integer
        If FirstID = 0 Then
            Exit Sub
        End If
        
        FirstID = FirstID - 1
        
        
        For i = 0 To 9
            Image1(i).Picture = PictureClip1.GraphicCell(i + FirstID)
            Image1(i).Visible = True
        Next iEnd Sub
      

  6.   

    对了,标尺的话,可能这样
    PictureClip1.Rows = 1
    PictureClip1.Cols = 30
      

  7.   

    非常感谢ozw(沧浪客),这是我第一次来这问问题,我刚学vb10来天,我以前是学java的,再次感谢你!
      

  8.   

    要是遇到Java的问题,那我得向你请教了