比如:
For I=0 to 10
Object.Left=X1+(X2-X1)*I/10
Object.Top=Y1+(Y2-Y1)*I/10
Next I
For I=0 to 10
Object.Left=X1+(X2-X1)*I/10
Object.Top=Y1+(Y2-Y1)*I/10
Next I
解决方案 »
- 关于获取dos下数据问题
- 较难的问题:请问怎样用vb实现自动监控程序标题里包含一些关键字的程序,一但发现立刻关闭
- 怎样提取[abc]defghij字符串中的abc??在线。。。
- vb timer1 设置后直接退出程序,求助!
- 在线等待:生成exe文件后如何发给朋友?
- 如何将PictrueBox里画的图形打印出来?
- 实时错误‘35602’集合中的关键字不为空
- 哪个可以教我学好VB?
- vb6.0考试题目,简单小设计,求
- 谁用过 ms 的form 2.0 object library? (使用过的人请进)
- 如何给每个人发送不同的Email呢?特急!在线等待!!
- 如何实现使textbox中只能输入带两位小数的内容?即保证其中内容为*.XX(*代表任意数字串),凡不合要求的输入都被过滤?
区两个点的x,y坐标的差然后根据你具体的要求以及效果来确定多少个点燃后就可以写程序了
<循环体开始>
[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
代码如下:
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
ComMove.Top = ComMove.Top + VY
ComMove.Left = ComMove.Left + VX
DoEvents
Next i
这样不会看到移动过程。除非换成Timer控件。
--------------------------------------------------------------------
Made by Thirdapple's Studio