反SPAM新思路—换Z-BLOG的验证码!(7)


    Next
End Sub

Rem 判断是否为干扰线上的点
Function onNoiseLine(ByRef nl,x,y)
    onNoiseLine = False
    Dim i
    For i=0 To UBound(nl,2)
        If x = nl(0,i) And y = nl(1,i) Then
            onNoiseLine = True
            Exit For
        End If
    Next
End Function

Rem 对单个字的点阵进行干扰
Rem 干扰思想:在点阵范围内随机产生2个端点,进行连线,以位移较大的一方做横轴,先将连线上的点删除,再将被删除点的纵轴方向上方或下方的点(随机确定)移向被删除点,移动后的空白用背景色补充
Function pcd_doubter(ByVal str,UnitWidth,UnitHeight,DotsLimit,tryCount,dbtTimes)
    Randomize
    Dim x1,x2,y1,y2,dx,dy,deltaT,i,ii,way,f1,f2
    For f1=1 To dbtTimes    '干扰次数
        For f2=1 To tryCount    '避免删除有效点超过上限的尝试次数限制
            '随机确定2个端点
            x1 = int(Rnd*UnitWidth)
            x2 = int(Rnd*UnitWidth)
            y1 = int(Rnd*UnitHeight)
            y2 = int(Rnd*UnitHeight)
            dx = X2 - X1
            dy = Y2 - Y1
            If Abs(dx) > Abs(dy) Then deltaT = Abs(dx) Else deltaT = Abs(dy)
            ReDim ary(1,deltaT)    '存储连线的点
            If deltaT = 0 Then
                ary(0,0) = x1
                ary(1,0) = y1
            Else

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/2942.html