好吧,代码没兴趣继续研究了。
绘图代码没有封装在一起,不想再看了。
增加三个变量的定义。我调试时,不愿去修改按钮动作,就临时改为了常量。
Dim xL As Double
Dim xL2 As Double
'Dim xladd As Double
Const xladd = 1
-------------------------------------
Static k2 As Double
Dim k3 As Double
If k2 = 360 Then
k2 = 0
End If
If k2 = 0 Then
k3 = 359
Else
k3 = k2 - 1
End If
'偏移量计算,xl2是上一次的,用于清除,xl是本次的,用于绘制
xL2 = xL
xL = xL - xladd
'清理部分,X坐标,一律加上 xl2 这个偏移量
Picture1.DrawWidth = 2
Picture1.Line (0, 0)-(xa(k3), ya(k3)), Picture1.BackColor
Picture1.Line (xa(k3) + xL2, ya(k3))-(xb(k3) + xL2, yb(k3)), Picture1.BackColor
Picture1.Line (xb(k3) + xL2, yb(k3))-(xc(k3) + xL2, yc(k3)), Picture1.BackColor
Picture1.Line (xb(k3) + xL2, yb(k3))-(xe(k3) + xL2, ye(k3)), Picture1.BackColor
If k3 > 68 And k3 < 150 Then
Picture1.Line (xe(k3) - 30 + xL2, ye(k3))-(xe(k3) - 20 + xL2, ye(k3) - 15 * Sqr(3)), Picture1.BackColor
Picture1.Line (xe(k3) + xL2, ye(k3))-(xe(k3) - 10 + xL2, ye(k3) - 15 * Sqr(3)), Picture1.BackColor
Else
Picture1.Line (xe(k3) + xL2 - 30, ye(k3))-(xe(k3) - 15 + xL2, ye(k3) - 15 * Sqr(3)), Picture1.BackColor
Picture1.Line (xe(k3) + xL2, ye(k3))-(xe(k3) - 15 + xL2, ye(k3) - 15 * Sqr(3)), Picture1.BackColor
End If
Picture1.Line (xc(k3) + xL2, yc(k3))-(xd, yd), Picture1.BackColor
Picture1.DrawWidth = 1
Picture1.Line (-100, -(137 + 15 * Sqr(3)))-(200, -(137 + 15 * Sqr(3))), Picture1.BackColor
Picture1.DrawWidth = 2
Picture1.Circle (0, 0), 30, Picture1.BackColor
Picture1.Circle (xa(k3) + xL2, ya(k3)), 10, Picture1.BackColor
Picture1.Circle (2 * xa(k3) / 3 + xL2, 2 * ya(k3) / 3), 10, Picture1.BackColor
Picture1.Circle (xb(k3) + xL2, yb(k3)), 2, Picture1.BackColor
Picture1.Circle (xe(k3) + xL2, ye(k3)), 2, Picture1.BackColor
Picture1.Circle (xc(k3) + xL2, yc(k3)), 2, Picture1.BackColor
Picture1.Circle (xd + xL2, yd), 1, Picture1.BackColor
'绘制部分,一律添加 xl 这个偏移量
Picture1.DrawWidth = 2
Picture1.Line (0, 0)-(xa(k2), ya(k2)), RGB(0, 0, 0)
Picture1.Line (xa(k2) + xL, ya(k2))-(xb(k2) + xL, yb(k2)), RGB(0, 0, 0)
Picture1.Line (xb(k2) + xL, yb(k2))-(xc(k2) + xL, yc(k2)), RGB(0, 0, 0)
Picture1.Line (xb(k2) + xL, yb(k2))-(xe(k2) + xL, ye(k2)), RGB(0, 0, 0)
If k2 > 68 And k2 < 150 Then
Picture1.Line (xe(k2) - 30 + xL, ye(k2))-(xe(k2) - 20 + xL, ye(k2) - 15 * Sqr(3)), RGB(255, 0, 0)
Picture1.Line (xe(k2) + xL, ye(k2))-(xe(k2) - 10 + xL, ye(k2) - 15 * Sqr(3)), RGB(255, 0, 0)
Else
Picture1.Line (xe(k2) - 30 + xL, ye(k2))-(xe(k2) - 15 + xL, ye(k2) - 15 * Sqr(3)), RGB(255, 0, 0)
Picture1.Line (xe(k2) + xL, ye(k2))-(xe(k2) - 15 + xL, ye(k2) - 15 * Sqr(3)), RGB(255, 0, 0)
End If
Text7.Text = Format((xe(k2) - 15), "0.00")
Text8.Text = Format((ye(k2) - 15 * Sqr(3)), "0.00")
Picture1.Line (xc(k2) + xL, yc(k2))-(xd + xL, yd), RGB(0, 0, 0)
Picture1.DrawWidth = 1
Picture1.Line (-100, -(137 + 15 * Sqr(3)))-(200, -(137 + 15 * Sqr(3))), RGB(0, 0, 0)
Picture1.DrawWidth = 2
Picture1.Circle (0, 0), 30, RGB(0, 0, 0)
Picture1.Circle (xa(k2), ya(k2)), 10, RGB(0, 0, 0)
Picture1.Circle (2 * xa(k2) / 3 + xL, 2 * ya(k2) / 3), 10, RGB(0, 0, 0)
Picture1.Circle (xb(k2) + xL, yb(k2)), 2, RGB(0, 0, 0)
Picture1.Circle (xe(k2) + xL, ye(k2)), 2, RGB(0, 0, 0)
Picture1.Circle (xc(k2) + xL, yc(k2)), 2, RGB(0, 0, 0)
Picture1.Circle (xd + xL, yd), 1, RGB(0, 0, 0)
For k4 = 0 To 359
Picture1.Line (xe(k4) - 15 + xL, ye(k4) - 15 * Sqr(3))-(xe(k4 + 1) - 15 + xL, ye(k4 + 1) - 15 * Sqr(3)), RGB(0, 0, 0)
Next k4
Text11.Text = Format((360 - k2), "0.00")
Text12.Text = Format((180 + k2), "0.00")
k2 = k2 + 1
-------------------------------------
还有一大堆代码,没去看,
经过测试,你的绘图函数不是在一个,所以需要使用二个变量来修正左移。
在清理部分,使用 xl2 进行运行,而 绘制部分则使用 xl 进行修改。
-----------------------
我测试代码里把 xladd 定义为一个常量,其实这里应该定义为变量,然后根据那个按钮来对这个
变量的值进行修改。
当向左移动时,
xladd = 1
当不向左移动时,xladd = 0
这样来切换为左移和停止。
--------------------
1太快了的话,可以使用小数。