如何用VB实现这样的小动画竖直坐标上的点只能在竖直坐标上上下运动,而水平坐标上的点也只能在水平坐标上左右运动.想实现的效果是这样的:程序一运行它们的初始位置是竖直坐标上的点

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/14 07:05:16

如何用VB实现这样的小动画竖直坐标上的点只能在竖直坐标上上下运动,而水平坐标上的点也只能在水平坐标上左右运动.想实现的效果是这样的:程序一运行它们的初始位置是竖直坐标上的点
如何用VB实现这样的小动画
竖直坐标上的点只能在竖直坐标上上下运动,而水平坐标上的点也只能在水平坐标上左右运动.想实现的效果是这样的:程序一运行它们的初始位置是竖直坐标上的点位于最高处,水平坐标上的点位于原点,而后点击command1竖直坐标上的点上下运动,并通过图中的连线带动水平坐标上的点左右运动
如果那条直线上还有一个点,随着它们的运动而运动,而且要显示该点的轨迹,

如何用VB实现这样的小动画竖直坐标上的点只能在竖直坐标上上下运动,而水平坐标上的点也只能在水平坐标上左右运动.想实现的效果是这样的:程序一运行它们的初始位置是竖直坐标上的点
放一个timer 放一个picture 放一个按钮,然后在代码中粘贴如下代码即可.
Const padding = 50 '边线距边框的距离
Const linelen = 2000# '线的长度是500 线的长度一定要大于起始到原点的位置
Const sv = 15 '小球每次走30象素 '为了好的效果一般为15的倍数
Dim ballpos As Long '初始为0
Dim status As Long '0 从上到圆点运动时,从圆点到右运动.1从圆点到下运行时,从右到圆点运动 2 从下到圆点运行时,从圆点到左运动 3从圆点向上运行时,从左向圆点运动.
Dim fx As Long
Dim fy As Long '计算原点距离]
Private Sub Command1_Click()
Timer1.Enabled = Not Timer1.Enabled
End Sub
Private Sub Form_Load()
Me.Show
Me.Width = 7000
Me.Height = 5000
Picture1.Move 50,1000,Me.Width - 200,Me.Height - 1500
Me.Timer1.Interval = 10
Timer1.Enabled = False
fx = Picture1.Width / 2
fy = Picture1.Height / 2
End Sub
Private Sub Timer1_Timer()
With Picture1
Picture1.Cls
Picture1.DrawWidth = 1 '画细线
Picture1.Line (padding,fy)-(.Width - padding,fy)
Picture1.Line (fx,padding)-(fx,.Height - padding)
Picture1.DrawWidth = 5 '画竖着的点
Picture1.PSet (.Width / 2,padding + ballpos)
'下面的代码是核心
Dim tx As Long
tx = Sqr(Abs((fy - padding) ^ 2 - (fy - (padding + ballpos)) ^ 2))
If status = 0 Then
Picture1.PSet (fx + tx,fy) '画第二个点
Picture1.DrawWidth = 1 '画两点连线
Picture1.Line (.Width / 2,padding + ballpos)-(fx + tx,fy)
ballpos = ballpos + sv
If ballpos > fy Then
status = 1
End If
ElseIf status = 1 Then
Picture1.PSet (fx + tx,fy)
Picture1.DrawWidth = 1 '画两点连线
Picture1.Line (.Width / 2,padding + ballpos)-(fx + tx,fy)
ballpos = ballpos + sv
If ballpos + 2 * padding >= .Height Then
status = 2
End If
ElseIf status = 2 Then
Picture1.PSet (fx - tx,fy)
Picture1.DrawWidth = 1 '画两点连线
Picture1.Line (.Width / 2,padding + ballpos)-(fx - tx,fy)
ballpos = ballpos - sv
If ballpos