在Z-BLOG可用的新版ASP的GIF验证码[V70404]

2019-01-13 19:34:00丽君


 Dim vExtent : vExtent = Width / Count
 Margin(0) = Border + vExtent * (Rnd * Offset) / 100 + Margin(1)
 Margin(1) = vExtent * (pNumber + 1) - Border - vExtent * (Rnd * Offset) / 100
 Margin(2) = Border + Height * (Rnd * Offset) / 100
 Margin(3) = Height - Border - Height * (Rnd * Offset) / 100

 Dim vStartX, vEndX, vStartY, vEndY
 Dim vWidth, vHeight, vDX, vDY, vDeltaT
 Dim vAngle, vLength

 vWidth =Int(Margin(1) - Margin(0))
 vHeight =Int(Margin(3) - Margin(2))
 vStartX = Int((DotData(pIndex)(0)-1) * vWidth / 100)
 vStartY = Int((DotData(pIndex)(1)-1) * vHeight / 100)

 Dim i, j
 For i = 1 To UBound(DotData(pIndex), 1)/2
  If DotData(pIndex)(2*i-2) <> 0 And DotData(pIndex)(2*i) <> 0 Then
   vEndX = (DotData(pIndex)(2*i)-1) * vWidth / 100
   vEndY = (DotData(pIndex)(2*i+1)-1) * vHeight / 100
   vDX = vEndX - vStartX
   vDY = vEndY - vStartY
   If vDX = 0 Then
    vAngle = Sgn(vDY) * 3.14/2
   Else
    vAngle = Atn(vDY / vDX)
   End If
   If Sin(vAngle) = 0 Then
    vLength = vDX
   Else
    vLength = vDY / Sin(vAngle)
   End If
   vAngle = vAngle + (Rnd - 0.5) * 2 * Angle * 3.14 * 2 / 100
   vDX = Int(Cos(vAngle) * vLength)
   vDY = Int(Sin(vAngle) * vLength)
   If Abs(vDX) > Abs(vDY) Then vDeltaT = Abs(vDX) Else vDeltaT = Abs(vDY)
   For j = 1 To vDeltaT
    SetDot Margin(0) + vStartX + j * vDX / vDeltaT, Margin(2) + vStartY + j * vDY / vDeltaT
   Next
   vStartX = vStartX + vDX
   vStartY = vStartY + vDY
  End If
 Next
End Sub