下面是类的代码,有一些简单的注释,能看明白了.嘿嘿!
Imports System
Imports System.Drawing.Drawing2D
Imports System.Drawing.imaging
Imports System.Drawing
Imports System.Web.UI
Imports System.IO
Namespace Validate
Public Class CreatValidateNumber
"生成验证码
Public Function CreatValidateNumber(ByVal length As Integer) As String
Dim randNumber() As Integer = New Integer(length) {}
Dim ValidateNumber() As Integer = New Integer(length) {}
Dim ValidateNumberStr As String = ""
Dim seekseek As Integer = CInt(DateTime.Now.Second)
Dim seekrand As Random = New Random(seekseek)
Dim beginseek = Int(seekrand.Next(0, Int32.MaxValue - length * 10000))
Dim seeks() As Integer = New Integer(length) {}
Dim i As Integer
"生成起始序列值
For i = 0 To length - 1
beginseek += 10000
seeks(i) = beginseek
Next
"生成随机数字
For i = 0 To length - 1
Dim rand As Random = New Random(seeks(i))
Dim pownum As Integer = 1 * Int(Math.Pow(10, length))
randNumber(i) = rand.Next(pownum, Int32.MaxValue)
Next
"抽取随机数字
For i = 0 To length - 1
Dim numstr As String = randNumber(i).ToString
Dim numlength As Integer = numstr.Length
Dim rand As New Random
Dim numPosition As Integer = rand.Next(0, numlength - 1)
ValidateNumber(i) = Int32.Parse(numstr.Substring(numPosition, 1))
Next
"生成验证码
For i = 0 To length - 1
ValidateNumberStr += ValidateNumber(i).ToString
Next
Return ValidateNumberStr
End Function
"创建验证码图片
Public Sub CreatevalidateGraphic(ByVal page As Page, ByVal validatenum As String)
Dim image As Bitmap = New Bitmap(CInt(Math.Ceiling(validatenum.Length * 12.5)), 22)
Dim g As Graphics = Graphics.FromImage(image)
Try
"生成随机生成器
Dim random As New Random
"清空图片背景色
g.Clear(Color.White)
"画图片的干扰线
Dim i As Integer
For i = 0 To 24
Dim x1 As Integer = random.Next(image.Width)
Dim x2 As Integer = random.Next(image.Width)
Dim y1 As Integer = random.Next(image.Height)
Dim y2 As Integer = random.Next(image.Height)
g.DrawLine(New Pen(Color.Silver), x1, y1, x2, y2)
Next
"画验证码
Dim font As Font = New Font("Arial", 12, (FontStyle.Bold And FontStyle.Italic))
Dim brush As LinearGradientBrush = New LinearGradientBrush(New Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2F, True)
g.DrawString(validatenum, font, brush, 3, 2)
"画前景干扰点
For i = 0 To 24
Dim x As Integer = random.Next(image.Width)
Dim y As Integer = random.Next(image.Height)
image.SetPixel(x, y, Color.FromArgb(random.Next()))
Next
"画图片的边框线
g.DrawRectangle(New Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1)
"保存图片
Dim stream As New MemoryStream
image.Save(stream, ImageFormat.Jpeg)
"输出图片
page.Response.Clear()
page.Response.ContentType = "image/jpeg"
page.Response.BinaryWrite(stream.ToArray())
Catch ex As Exception
Finally
g.Dispose()
image.Dispose()
End Try
End Sub
End Class
End Namespace
下面是这个类的引用一个小例子
HTML部份:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="ValidateNumber.WebForm1"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
WebForm1title>
HEAD>