利用 vb 做地球围绕太阳旋转

来源:百度知道 编辑:UC知道 时间:2024/06/07 07:04:13
窗体上加了shape1(circle),shape2(circle),时钟控件,命令按钮
代码如下
可是不行,总是不能"旋转",每次“地球”都是跑出窗体之外了
大虾们帮帮忙拉~不胜感激!

Dim x1, y1, x2, y2, a1, a2, r1
Private Sub Form_Load()
x1 = Me.ScaleWidth / 2
y1 = Me.ScaleHeight / 2
x2 = x1
y2 = y1 - Me.ScaleHeight / 4
r1 = Me.ScaleHeight / 4
a1 = Me.ScaleWidth / 3.5
a2 = Me.ScaleWidth / 7
Shape1.Left = x1 - a1
Shape1.Top = y1 - a1
Shape1.Width = 2 * a1
Shape2.Width = 2 * a2
Shape2.Left = x2 - a2
Shape2.Top = x2 - a2
End Sub
Private Sub command1_click()
Timer1.Enabled = True
End Sub
Private Sub timer1_timer()
Const pi = 3.1415926
t = t + 1
x2 = x2 + r1 * Sin(pi * t / 20)
y2 = y2 - r1 * Cos(pi * t / 20)
Shape2.Left = x2 - a2
Shape2.Top = x2 - a2
End Sub

该怎么做哦
谢谢~!

'这样改就行。

Option Explicit
Dim mr As Long, mx As Long, my As Long

Private Sub Form_Load()
Dim x1, y1, x2, y2, a1, a2, r1
x1 = Me.ScaleWidth / 2
y1 = Me.ScaleHeight / 2
x2 = x1
y2 = y1 - Me.ScaleHeight / 4
r1 = Me.ScaleHeight / 4
a1 = Me.ScaleWidth / 3.5
a2 = Me.ScaleWidth / 7
Shape1.Left = x1 - a1
Shape1.Top = y1 - a1
Shape1.Width = 2 * a1
Shape2.Width = 2 * a2
Shape2.Left = x2 - a2
Shape2.Top = x2 - a2
End Sub

Private Sub command1_click()
With Shape1
mx = .Left + .Width \ 2
my = .Top + .Height \ 2
mr = Shape2.Top + Shape2.Height \ 2 - my
End With
Timer1.Enabled = True
End Sub

Private Sub timer1_timer()
Static jd As Integer
Dim p As Long, x As Long, y As Long
With Shape2
.Left = mx + mr * Cos(jd * 20) - .Width \ 2
.Top = my + mr * Sin(jd * 20) - .Height \ 2
End With
jd =