Validate.vb
代碼如下
ImportsSystem
ImportsSystem.Drawing.Drawing2D
ImportsSystem.Drawing.imaging
ImportsSystem.Drawing
ImportsSystem.Web.UI
ImportsSystem.IO
PublicClassValidateClassValidate
PublicClassCreatValidateNumberClassCreatValidateNumber
'生成驗證碼
PublicFunctionCreatValidateNumber()FunctionCreatValidateNumber(ByVallengthAsInteger)
DimvcharAsString="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"
Dimvcarray()AsString=Split(vchar,",")'将字元串生成數組
DimvnumAsString=""
DimiAsByte
Fori=1Tolength
Randomize()
vnum=vnum&vcarray(Int(35*Rnd()))'數組一般從0開始讀取,是以這裡為35*rnd
Next
Returnvnum
EndFunction
'建立驗證碼圖檔
PublicSubCreatevalidateGraphic()SubCreatevalidateGraphic(ByValpageAsPage,ByValvalidatenumAsString)
DimimageAsBitmap=NewBitmap(CInt(Math.Ceiling(validatenum.Length*12.5)),22)
DimgAsGraphics=Graphics.FromImage(image)
Try
'生成随機生成器
DimrandomAsNewRandom
'清空圖檔背景色
g.Clear(Color.White)
'畫圖檔的幹擾線
DimiAsInteger
Fori=0To24
Dimx1AsInteger=random.Next(image.Width)
Dimx2AsInteger=random.Next(image.Width)
Dimy1AsInteger=random.Next(image.Height)
Dimy2AsInteger=random.Next(image.Height)
g.DrawLine(NewPen(Color.Silver),x1,y1,x2,y2)
Next
'畫驗證碼
DimfontAsFont=NewFont("Arial",12,(FontStyle.BoldAndFontStyle.Italic))
DimbrushAsLinearGradientBrush=NewLinearGradientBrush(NewRectangle(0,0,image.Width,image.Height),Color.Blue,Color.DarkRed,1.2F,True)
g.DrawString(validatenum,font,brush,3,2)
'畫前景幹擾點
Fori=0To24
DimxAsInteger=random.Next(image.Width)
DimyAsInteger=random.Next(image.Height)
image.SetPixel(x,y,Color.FromArgb(random.Next()))
Next
'畫圖檔的邊框線
g.DrawRectangle(NewPen(Color.Silver),0,0,image.Width-1,image.Height-1)
'儲存圖檔
DimstreamAsNewMemoryStream
image.Save(stream,ImageFormat.Jpeg)
'輸出圖檔
page.Response.Clear()
page.Response.ContentType="image/jpeg"
page.Response.BinaryWrite(stream.ToArray())
CatchexAsException
Finally
g.Dispose()
image.Dispose()
EndTry
EndSub
EndClass
EndClass
建立一個img.aspx的窗體
背景代碼如下
PublicClassimgClassimg
InheritsSystem.Web.UI.Page
Web窗體設計器生成的代碼#Region"Web窗體設計器生成的代碼"
'該調用是Web窗體設計器所必需的。
PrivateSubInitializeComponent()SubInitializeComponent()
EndSub
'注意:以下占位符聲明是Web窗體設計器所必需的。
'不要删除或移動它。
PrivatedesignerPlaceholderDeclarationAsSystem.Object
PrivateSubPage_Init()SubPage_Init(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Init
'CODEGEN:此方法調用是Web窗體設計器所必需的
'不要使用代碼編輯器修改它。
InitializeComponent()
EndSub
#EndRegion
PublicvalidatesAsNewValidate.CreatValidateNumber
PublicvaliAsString
PrivateSubPage_Load()SubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
'在此處放置初始化頁的使用者代碼
vali=validates.CreatValidateNumber(5)
validates.CreatevalidateGraphic(Me,vali)
Session("vali")=vali
EndSub
EndClass
調用的HMTL
WebForm1
背景
PrivateSubButton1_Click()SubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
Iftb_valide.Text=Session("vali")Then
Response.Write("提示:驗證通過")
Else
Response.Write("所填寫的驗證碼與所給的不符")
EndIf
EndSub
完成效果如下
