比如:
For I=0 to 10
    Object.Left=X1+(X2-X1)*I/10
    Object.Top=Y1+(Y2-Y1)*I/10
Next I

解决方案 »

  1.   

    也可以加一个Timer控件,至于怎么写,我想你应该清楚吧:)
      

  2.   

    用timer空间与用循环差不多主要是你如何确定每一个的坐标我建议:
    区两个点的x,y坐标的差然后根据你具体的要求以及效果来确定多少个点燃后就可以写程序了
      

  3.   

    : zyl910(910:分儿,我来了!)说得和我一样把
      

  4.   

    给你一些有用的函数吧。注意:pX,pY,pXm,pYm,pXStep,pYStep最好是Public的。[StepGet(pX,pY,pXm,pYm,pXStep,pYStep)]'如果你是直线方式。
    <循环体开始>
      [StepGetJmp(pX,pY,pXm,pYm,pXStep,pYStep)]'如果你是跳跃方式。
      PosMoveTo(pX,pY,pXm,pYm,pXStep,pYStep)
      If PosMoveOver(pX,pY,pXm,pYm,pXStep,pYStep) Then 结束移动
    <循环体结束>Sub PosMoveTo(pX,pY,pXm,pYm,pXStep,pYStep)
      '向pXm,pYm方向移动一个点。
      pX=DataMoveTo(pX,pXm,pXStep)
      pY=DataMoveTo(pY,pYm,pYStep)
    End SubSub StepGetJmp(pX,pY,pXm,pYm,pXStep,pYStep)
      '求X,Y的步长,这个是跳跃型的。需要走一步求一次。
      tAbsX=Abs(pX-pXm)
      tAbsY=Abs(pY-pYm)
      pXStep=tAbsX/2
      pYStep=tAbsY/2
    End SubSub StepGet(pX,pY,pXm,pYm,pXStep,pYStep)  '求X,Y移动直线步长。否则如果pXStep=pYStep,那么走的不是直线。只求一次就够了。
      tAbsX=Abs(pX-pXm)
      tAbsY=Abs(pY-pYm)
      tAbsR=SQR(tAbsX^2+tAbsY^2)
      pXStep=tAbsX/tAbsR
      pYStep=tAbsY/tAbsREnd SubFunction PosMoveOver(pX,pY,pXm,pYm,pXStep,pYStep)
      '二维坐标的覆盖判断。
      PosMoveOver=DataMoveOver(pX,pXm,pXStep) And DataMoveOver(pY,pYm,pYStep) 
    End FunctionFunction DataMoveOver(pN,pNm,pNStep)
      '在pNStep精度内,判断命中的函数。如果这个函数为真则停止移动。
      DataMoveOver=Abs(pN-pNm)<=pNStep
    End FunctionFunction DataMoveTo(pN,pNm,pNStep)
      'pN     起点
      'pNm    终点
      'pNStep 步长
      If DataMoveOver(pN,pNm,pNStep) Then
          tOutInt=pN
        Else
          tOutInt=pN+Sgn(pN-pNm)*pNStep
      End If
      DataMoveTo=tOutInt
    End Function
      

  5.   

    先要求速度更好!
    代码如下:
    Private Sub ComMove_Click()
    Dim X1 As Long, X2 As Long
    Dim Y1 As Long, Y2 As Long
    Dim VX As Long, VY As Long
    Dim i As Long
    X1 = 100
    Y1 = 200
    Y2 = 300
    X2 = 200
    ComMove.Top = Y1
    ComMove.Left = X1
    Debug.Print ComMove.Top
    Debug.Print ComMove.Left
    VX = (X2 - X1) / 100
    VY = (Y2 - Y1) / 100
    For i = 1 To 100
      ComMove.Top = ComMove.Top + VY
      ComMove.Left = ComMove.Left + VX
      DoEvents
    Next i
    Debug.Print ComMove.Top
    Debug.Print ComMove.Left
    End SubPrivate Sub Form_Load()
    FrmMain.ScaleMode = 3
    End Sub
                                                                   '原创
    --------------------------------------------------------------------
    Made by Thirdapple's Studio
      

  6.   

    For i = 1 To 100
      ComMove.Top = ComMove.Top + VY
      ComMove.Left = ComMove.Left + VX
      DoEvents
    Next i
    这样不会看到移动过程。除非换成Timer控件。
      

  7.   

    使用Windows API LineDDA函数,可以到MSDN中查看参数的含义,不难。
      

  8.   

    To KiteGirl(小仙妹),该程序已在VB 6.0环境下调试通过,注意其中加的DoEvents!!!!
    --------------------------------------------------------------------
    Made by Thirdapple's Studio