Validate.vb
代码如下
Imports System
Imports System.Drawing.Drawing2D
Imports System.Drawing.imaging
Imports System.Drawing
Imports System.Web.UI
Imports System.IO
Public Class ValidateClass Validate
Public Class CreatValidateNumberClass CreatValidateNumber
'生成验证码
Public Function CreatValidateNumber()Function CreatValidateNumber(ByVal length As Integer)
Dim vchar As String = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,w,x,y,z"
Dim vcarray() As String = Split(vchar, ",") '将字符串生成数组
Dim vnum As String = ""
Dim i As Byte
For i = 1 To length
Randomize()
vnum = vnum & vcarray(Int(35 * Rnd())) '数组一般从0开始读取,所以这里为35*rnd
Next
Return vnum
End Function
'创建验证码图片
Public Sub CreatevalidateGraphic()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 Class
新建一个img.aspx的窗体
后台代码如下
Public Class imgClass img
Inherits System.Web.UI.Page
Web 窗体设计器生成的代码#Region " Web 窗体设计器生成的代码 "
'该调用是 Web 窗体设计器所必需的。
Private Sub InitializeComponent()Sub InitializeComponent()
End Sub
'注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init()Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub
#End Region
Public validates As New Validate.CreatValidateNumber
Public vali As String
Private Sub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
vali = validates.CreatValidateNumber(5)
validates.CreatevalidateGraphic(Me, vali)
Session("vali") = vali
End Sub
End Class
调用的HMTL
WebForm1
后台
Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If tb_valide.Text = Session("vali") Then
Response.Write("提示:验证通过")
Else
Response.Write("所填写的验证码与所给的不符")
End If
End Sub
完成效果如下
代码如下
Imports System
Imports System.Drawing.Drawing2D
Imports System.Drawing.imaging
Imports System.Drawing
Imports System.Web.UI
Imports System.IO
Public Class ValidateClass Validate
Public Class CreatValidateNumberClass CreatValidateNumber
'生成验证码
Public Function CreatValidateNumber()Function CreatValidateNumber(ByVal length As Integer)
Dim vchar As String = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,w,x,y,z"
Dim vcarray() As String = Split(vchar, ",") '将字符串生成数组
Dim vnum As String = ""
Dim i As Byte
For i = 1 To length
Randomize()
vnum = vnum & vcarray(Int(35 * Rnd())) '数组一般从0开始读取,所以这里为35*rnd
Next
Return vnum
End Function
'创建验证码图片
Public Sub CreatevalidateGraphic()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 Class
新建一个img.aspx的窗体
后台代码如下
Public Class imgClass img
Inherits System.Web.UI.Page
Web 窗体设计器生成的代码#Region " Web 窗体设计器生成的代码 "
'该调用是 Web 窗体设计器所必需的。
Private Sub InitializeComponent()Sub InitializeComponent()
End Sub
'注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init()Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub
#End Region
Public validates As New Validate.CreatValidateNumber
Public vali As String
Private Sub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
vali = validates.CreatValidateNumber(5)
validates.CreatevalidateGraphic(Me, vali)
Session("vali") = vali
End Sub
End Class
调用的HMTL
WebForm1
后台
Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If tb_valide.Text = Session("vali") Then
Response.Write("提示:验证通过")
Else
Response.Write("所填写的验证码与所给的不符")
End If
End Sub
完成效果如下