急~急~急~~请VB高手~帮忙解决~

来源:百度知道 编辑:UC知道 时间:2024/06/14 17:04:24
5. 设计如下图窗体,单击运行给出提示框,输入一个正整数(要求在1至5之间,能进行合法检查),根据所输入的数值,分割正文方形。分割的方法是从大正方形开始,在内部增加五个小正方形,小正方形的边长是大正方形边长的三分之一,这五个小正方形中四个分别位于大正方形的四个角处,第五个位于正中央,然后对这五个小正方形再重复上述过程,直到满足给定条件的层次数(层次数为输入的正整数的值)为止。例如,当输入正整数为3和5时,效果分别如下图所示 。文件名为Bcx7(15分)。

就是一个大正方形里面~中间是一个正方形~~然后四个角落是一个正方形~
(如果不清楚的话~加我邮箱发信息过来~我发图片原题给你看清楚~~)
邮箱: ywfvbp@126.com
希望能请VB~~高手帮忙~~拜托了~~

画图方法涉及到递归调用,用递归方法来画图,代码很短,但这本质上其实是比较复杂的东东。添加一个Picture控件,尺寸拉大一点哦,代码如下:

Private Sub Picture1_Click()
On Error Resume Next
Picture1.AutoRedraw = True
Dim n As Integer
'n表示递归层次
n = InputBox("输入分割次数 n ∈ [1,5] ,一定要!", "输入")
If n >= 6 Or n <= 0 Then
l = MsgBox("你输入的n大小有问题!", vbOKOnly, "注意!")
Exit Sub
End If
Picture1.Scale (0, 1000)-(1000, 0) '自定义图片框的坐标系

Call Square(30, 970, 30, 970, n) '调用画正方形的子过程

End Sub

Private Sub Square(x1!, x2!, y1!, y2!, k%)
Dim u1!, u2!, v1!, v2!

If (k > 1) Then '当没有到达底层,递归调用
u1 = (x2 - x1) / 3 + x1 '四条边的三分点坐标
u2 = u1 + (x2 - x1) / 3
v1 = (y2 - y1) / 3 + y1
v2 = v1 + (y2 - y1) / 3
Call Square(x1, u1, y1, v1, k - 1) '递归调用