无需控件,直接复制代码
Option Explicit
Private Const PI = 3.141592654
Dim R As Single, Rx As Single, Ry As Single
Dim w As Single, h As Single
Dim A As Single, bool As Boolean
Dim Wall As Long
Dim dotY(360) As Long
Public Sub Draw()
Me.Cls
w = R * Sin(PI / 180 * A) '由于sin的参数单位是弧度,要转换
h = Sqr(R ^ 2 - w ^ 2)
Me.Line (Wall, Ry - R)-(Wall, Ry + R), vbYellow
Me.Circle (Rx, Ry), R, vbRed
If bool Then
DrawTriangle Rx, Ry, Rx, Ry + h, Rx + w, Ry + h
DrawDot Ry + h, Rx + w
Else
DrawTriangle Rx, Ry, Rx, Ry - h, Rx + w, Ry - h
DrawDot Ry - h, Rx + w
End If
A = A + 1
If A = 360 Then A = 0
If A = 90 Or A = 270 Then bool = Not bool
End Sub
Private Sub DrawDot(y As Long, x As Long)
Dim i As Long
For i = 360 To 1 Step -1
dotY(i) = dotY(i - 1)
Me.PSet (i + Wall, dotY(i)), vbYellow
Next i
dotY(0) = y
Me.PSet (Wall, dotY(0)), vbYellow
End Sub
Private Sub DrawTriangle(x0 As Single, y0 As Single, x1 As Single, y1 As Single, x2 As Single, y2 As Single)
Me.Line (x0, y0)-(x1, y1), vbWhite
Me.Line (x2, y2)-(x1, y1), vbWhite
Me.Line (x0, y0)-(x2, y2), vbWhite
Me.Circle (x2, y2), 5, &HFFFF00
End Sub
Private Sub Form_Load()
R = 50: Rx = 55: Ry = 55
Wall = Ry + R + 2
Me.AutoRedraw = True
Me.Show
Do
Draw
DoEvents
Loop
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub