一个转子

无需控件,直接复制代码

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

 

posted @ 2015-11-27 19:07  JustXIII  阅读(303)  评论(0编辑  收藏  举报