Vb6 在Visual Basic 6中旋转一行
我想让一条线旋转。我研究了圆周率和弧度,并制定了自己的算法(如果可以这样称呼的话)。我不喜欢使用互联网上已经生成的代码。我想单独发现它们,但要用逻辑。代码如下:Vb6 在Visual Basic 6中旋转一行,vb6,Vb6,我想让一条线旋转。我研究了圆周率和弧度,并制定了自己的算法(如果可以这样称呼的话)。我不喜欢使用互联网上已经生成的代码。我想单独发现它们,但要用逻辑。代码如下: Dim pi As Double Dim a, b, c, d, e, x, y As Double Dim speed, radius As Integer Private Sub Form_Load() pi = 3.14159265358979 speed = 1 radius =
Dim pi As Double
Dim a, b, c, d, e, x, y As Double
Dim speed, radius As Integer
Private Sub Form_Load()
pi = 3.14159265358979
speed = 1
radius = 600
End Sub
Private Sub Command1_Click()
Timer1.Enabled = Not Timer1.Enabled
If Timer1.Enabled = True Then
Command1.Caption = "Stop"
Else
Command1.Caption = "Start"
End If
End Sub
Private Sub Timer1_Timer()
ForeColor = vbWhite
timer1.interval=speed
Refresh
a = a + 2
b = Sin((a * pi) / 180)
c = Cos((a * pi) / 180)
y = radius * b
x = radius * c
Call Label1.Move(6240 + x, 4200 + y)
If Left(b, 1) = "-" Then
Label1.Caption = "---"
Else
Label1.Caption = "+++"
End If
If Left(c, 1) = "-" Then
Label1.Caption = Label1.Caption & " " & "---"
Else
Label1.Caption = Label1.Caption & " " & "+++"
End If
Line (3000 + x, 4200 + y)-(6240 + x, 4200 + y)
Line (3000, 4200)-(3000 + x, 4200 + y)
Line (6240, 4200)-(6240 + x, 4200 + y)
For d = 3000 To 6240
Line (d, 4200)-(3000 + x, 4200 + y)
Next
For e = 3000 + x To 6240 + x
Line (e, 4200 + y)-(6240, 4200)
Next
End Sub
我想在x轴上旋转直线,而不是z轴(看起来是z轴)。我重新计算了一切,但我不知道问题出在哪里。什么是解释公式?我相信你在追求以下效果:
Option Explicit
Dim D As Long, S As Long, Y As Long
Private Sub Command1_Click()
Timer1.Enabled = Not Timer1.Enabled
If Timer1.Enabled = True Then
Command1.Caption = "Stop"
Else
Command1.Caption = "Start"
End If
End Sub
Private Sub Form_Load()
D = 1 'Start going down; change to 0 to start going up instead
Y = 100 'Mid point
End Sub
Private Sub Timer1_Timer()
If S Then
If S = 8 Then
S = 0
Else
S = S + 1
lblRate = "0"
Exit Sub
End If
End If
Refresh
If D Then
If Y < 200 Then
Select Case Y
Case Is < 20
'Begin to accelerate
Y = Y + 1
lblRate = "+1"
Case Is < 40
'Continue to accelerate
Y = Y + 2
lblRate = "+2"
Case Is < 160
'Set acceleration to peak
Y = Y + 3
lblRate = "+3"
Case Is < 180
'Begin to decelerate
Y = Y + 2
lblRate = "+2"
Case Else
'Continue to decelerate
Y = Y + 1
lblRate = "+1"
End Select
Else
'Stop and reverse direction
D = 0
S = 1
lblRate = "0"
End If
Else
If Y > 0 Then
Select Case Y
Case Is < 20
'Begin to accelerate
Y = Y - 1
lblRate = "-1"
Case Is < 40
'Continue to accelerate
Y = Y - 2
lblRate = "-2"
Case Is < 160
'Set acceleration to peak
Y = Y - 3
lblRate = "-3"
Case Is < 180
'Begin to decelerate
Y = Y - 2
lblRate = "-2"
Case Else
'Continue to decelerate
Y = Y - 1
lblRate = "-1"
End Select
Else
'Stop and reverse direction
D = 1
S = 1
End If
End If
Line (120, 100)-(120, Y)
End Sub
选项显式
D长,S长,Y长
专用子命令1_Click()
Timer1.Enabled=未启用Timer1.Enabled
如果Timer1.Enabled=True,则
Command1.Caption=“停止”
其他的
Command1.Caption=“开始”
如果结束
端接头
专用子表单_加载()
D=1'开始下降;改为0以开始启动
Y=100'中点
端接头
专用子定时器1_Timer()
如果是那么
如果S=8,则
S=0
其他的
S=S+1
lblRate=“0”
出口接头
如果结束
如果结束
刷新
如果是D那么
如果Y<200,则
选择案例Y
病例<20例
"开始加速"
Y=Y+1
lblRate=“+1”
病例<40
继续加快,
Y=Y+2
lblRate=“+2”
病例<160
'将加速度设置为峰值
Y=Y+3
lblRate=“+3”
病例<180
“开始减速
Y=Y+2
lblRate=“+2”
其他情况
继续减速,
Y=Y+1
lblRate=“+1”
结束选择
其他的
“停止并反转方向
D=0
S=1
lblRate=“0”
如果结束
其他的
如果Y>0,则
选择案例Y
病例<20例
"开始加速"
Y=Y-1
lblRate=“-1”
病例<40
继续加快,
Y=Y-2
lblRate=“-2”
病例<160
'将加速度设置为峰值
Y=Y-3
lblRate=“-3”
病例<180
“开始减速
Y=Y-2
lblRate=“-2”
其他情况
继续减速,
Y=Y-1
lblRate=“-1”
结束选择
其他的
“停止并反转方向
D=1
S=1
如果结束
如果结束
线(120100)-(120,Y)
端接头
虽然从技术上讲,它并不遵循正确计算的曲率,但它更像是绕X轴旋转的直线的简化版本
此外,确保使用像素比例模式,而不是Twips模式,以获得更好的绘图性能。您是否在调试器中一次一行地进行调试并观察了发生的情况?