无需控件,直接复制代码
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
原文:http://www.cnblogs.com/xiii/p/5001547.html