Dim Xo(1) As Single, Yo(1) As Single, K(1) As Single, A(1) As Single
Dim DrawN As Integer
Private Sub Form_Load()
Me.AutoRedraw = True
Me.Scale (-1000, 1000)-(1000, -1000) '定义坐标系统为:窗口的左上角坐标是(-1000,1000),右下角坐标是(1000,-1000),原点在窗口的中心;亦即是常用的平面直角坐标系形式
DrawN = 0 '标志量初始化
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If DrawN = 3 Then DrawN = 0 '当第四次点下鼠标时,标志量复位
If DrawN < 2 Then '根据标志量给各初始量取值
Xo(DrawN) = X
Yo(DrawN) = Y
End If
DrawN = DrawN + 1 '标志量自增
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If DrawN = 2 Then
Me.Cls '清除屏幕以便生成新的夹角
Me.Line (Xo(0), Yo(0))-(X, Y) '画第一条直线
Me.Line (Xo(1), Yo(1))-(X, Y) '画第二条直线,生成夹角
If Xo(0) = X Then '如果直线两个端点的横坐标是一样的,它与横坐标的夹角就是90度
A(0) = 90
Else
A(0) = 180 * Atn((Yo(0) - Y) / (Xo(0) - X)) / 3.14 '算出直线的斜率,并转换为角度
End If
If A(0) < 0 Then A(0) = 180 + A(0) '如果得到的角度为负值,就将其转换为钝角
'第二条直线的处理方法同第一条直线
If Xo(1) = X Then
A(1) = 90
Else
A(1) = 180 * Atn((Yo(1) - Y) / (Xo(1) - X)) / 3.14
End If
If A(1) < 0 Then A(1) = 180 + A(1)
'分两种情况计算两直线的夹角
If (Y > Yo(0) And Y < Yo(1)) Or (Y < Yo(0) And Y > Yo(1)) Then
Label3 = "两直线的夹角是:" & 180 - Abs(A(1) - A(0))
Else
Label3 = "两直线的夹角是:" & Abs(A(1) - A(0))
End If
End If
End Sub