|
楼主 |
发表于 2019-5-8 09:35
|
显示全部楼层
Public triArray(1 To 4, 1 To 2) As Single
Public arrColor(7) As Integer
Sub init()
For Each sh In Worksheets(1).Shapes
If sh.Type <> 8 And sh.Type <> 12 Then '删除除按钮外的东西
sh.Delete
End If
Next sh
triArray(1, 1) = 22
triArray(1, 2) = 300
triArray(2, 1) = 58
triArray(2, 2) = 208
triArray(3, 1) = 300
triArray(3, 2) = 210
triArray(4, 1) = 22
triArray(4, 2) = 300
End Sub
Public Sub jeffery(depth As Integer, triArray() As Single)
Dim a_triArray(1 To 4, 1 To 2) As Single
Dim b_triArray(1 To 4, 1 To 2) As Single
Dim c_triArray(1 To 4, 1 To 2) As Single
a_triArray(1, 1) = triArray(1, 1)
a_triArray(1, 2) = triArray(1, 2)
a_triArray(2, 1) = (triArray(1, 1) + triArray(2, 1)) / 2
a_triArray(2, 2) = (triArray(1, 2) + triArray(2, 2)) / 2
a_triArray(3, 1) = (triArray(1, 1) + triArray(3, 1)) / 2
a_triArray(3, 2) = (triArray(1, 2) + triArray(3, 2)) / 2
a_triArray(4, 1) = triArray(1, 1)
a_triArray(4, 2) = triArray(1, 2)
b_triArray(1, 1) = triArray(2, 1)
b_triArray(1, 2) = triArray(2, 2)
b_triArray(2, 1) = (triArray(1, 1) + triArray(2, 1)) / 2
b_triArray(2, 2) = (triArray(1, 2) + triArray(2, 2)) / 2
b_triArray(3, 1) = (triArray(2, 1) + triArray(3, 1)) / 2
b_triArray(3, 2) = (triArray(2, 2) + triArray(3, 2)) / 2
b_triArray(4, 1) = triArray(2, 1)
b_triArray(4, 2) = triArray(2, 2)
c_triArray(1, 1) = triArray(3, 1)
c_triArray(1, 2) = triArray(3, 2)
c_triArray(2, 1) = (triArray(3, 1) + triArray(2, 1)) / 2
c_triArray(2, 2) = (triArray(3, 2) + triArray(2, 2)) / 2
c_triArray(3, 1) = (triArray(1, 1) + triArray(3, 1)) / 2
c_triArray(3, 2) = (triArray(1, 2) + triArray(3, 2)) / 2
c_triArray(4, 1) = triArray(3, 1)
c_triArray(4, 2) = triArray(3, 2)
If depth > 0 Then
dely
Call triDrawing(depth, triArray)
Call jeffery(depth - 1, c_triArray)
dely
Call jeffery(depth - 1, b_triArray)
dely
Call jeffery(depth - 1, a_triArray)
dely
End If
End Sub
Public Sub triDrawing(n As Integer, points() As Single)
Dim arrColor As Variant
arrColor = Array(12, 51, 43, 11, 7, 44, 33)
Dim spe As Shape
Set spe = Worksheets(1).Shapes.AddPolyline(points)
spe.Name = "triangle"
spe.Select
With Selection.ShapeRange
.Line.Visible = msoTrue
.Line.ForeColor.SchemeColor = arrColor(n)
.Fill.Visible = msoTrue
.Fill.ForeColor.SchemeColor = arrColor(n)
End With
End Sub
Public Sub test()
Call init
Call jeffery(5, triArray())
dely
End Sub
Public Sub dely()
DoEvents
k = 20
For i = 1 To k * 99
Next
End Sub |
|