Dim x As Integer, y As Integer, N As Integer, m As Integer, i As Integer, j As Integer, h As Integer, l As Integer
Private Sub Form_Load()
'假设 PictureBox 控件的名称为 Picture1
Picture1.Picture = LoadPicture("D:\a\4.bmp")
l = Picture1.Width
h = Picture1.Height
End Sub
Private Sub Picture1_load()
Picture1.Picture = LoadPicture("D:\a\4.bmp")
End Sub
Private Sub command1_Click()
N = 0
m = Val(Text1.Text)
For i = 1 To m
    For j = 1 To m
        For x = 0 + l / m * (i - 1) To l / m + l / m * (i - 1)
            For y = 0 + h / m * (j - 1) To h / m + h / m * (j - 1)
                If Point(x, y) <> 0 Then
                y = y + 1
                Else
                End If
                Next y
                x = x + 1
                Next x
    j = j + 1
    Next j
    N = N + 1
i = i + 1
Next i
Print "N ="; N
End Sub我做该程序的目是将图片分成m*m 格,其中有多少格有黑线(我把有一个点为黑就认为是黑线),但程序运行基本上结果都是 N=m/2
很明显的运行结果错了,大家帮我看一下下啊

解决方案 »

  1.   

    你的算法太乱了,四个循环,吓死人
    For循环没有Step,步长是多少?整型值,被1除是什么?
    跟踪每一步了吗?
      

  2.   

    If Point(x, y) <> 0 Then 这句应该有逻辑错误
      

  3.   

    因为for语句在没有step的时候会自动将变量增一,不需要你另外写代码,所以:
    i = i + 1
    j = j + 1
    x = x + 1
    都应该删掉。
    If Point(x, y) <> 0 Then
      y = y + 1
    Else
    End If按你的逻辑(猜的),应是If Point(x, y) = 0 Then
      y = y - 1
    End If具体的程序没有细看
      

  4.   

    谢谢大家的帮忙现在我基本知道我错哪儿了
    就是piont(x,y)这个函数好象错了大家帮忙看一下
    我是要对(x,y)这个点取RGB 色
      

  5.   

    基本功还没练好就急着做高级应用,是不是有点太冒失了呢?point(x,y)返回的就是x,y点的rgb值啊
      

  6.   

    没法不乱也没法不用四个循环
    我的目的是对图片做分形处理
    将图片分成m*m 格,其中有多少格有黑线(我把有一个点为黑就认为是黑线)
    先对(i=1,j=1)格中(x,y)像素处理,如果(x,y)为黑则跳出该格进入(i=1,j=2)格
    计数器n=n+1,否则对下一像素(x,y)处理,直到该格所有像素都处理完,进如下一格
    最后统计n=?
    现在我通过对picturebox的atuoredraw设置成为true
    然后再设置一个函数a 令a =picture1.point(x,y)能读出point(x,y)的颜色
    条件又错了,呵呵
    有空的兄弟再帮看一下