VB.NET生成验证码相关代码编写方式
创始人
2024-06-20 05:11:46
0

当使用VB.NET进行实际编程的时候,会发现,其作用是相当强大的。而且应用范围也是比较广泛。今天我们就可以通过一个基于VB.NET生成验证码的示例来对这款编程语言的实际应用方式进行解读。#t#

VB.NET生成验证码前台代码为:

  1. < asp:image id="Image2" 
    runat="server" ImageUrl=
    "ValidateCode.aspx"> 

ValidateCode.aspx文件的代码为:

  1. Private Sub Page_Load
    (ByVal sender As System.Object, 
    ByVal e As System.EventArgs)
     Handles MyBase.Load  
  2. list()  
  3. End Sub  
  4. Function list() 

在此处放置初始化页的用户代码,rndnum是一个自定义函数

  1. Dim vnum As String 
    = rndnum(4)  
  2. Session("vnum") = vnum  
  3. validatecode(vnum)  
  4. End Function 

VB.NET生成验证码生成图象验证码函数

  1. Sub validatecode(ByVal vnum)  
  2. Dim img As System.
    drawing.Bitmap  
  3. Dim g As Graphics  
  4. Dim r As Random = New Random  
  5. Dim gheight As IntInteger = 
    Int(Len(vnum) * 13) 

gheight为图片宽度,根据字符长度自动更改图片宽度

  1. img = New Bitmap(gheight, 20)  
  2. g = Graphics.FromImage(img)  
  3. 'g.DrawString(vnum, New System.
    Drawing.Font
    ("Arial", 10), New System.Drawing.
    SolidBrush(Color.Blue), 3, 3) 

新增,修改、画图片的背景噪音线

  1. 'For i As Integer = 0 To 25  
  2. For i As Integer = 0 To 10  
  3. Dim x1 As Integer  
  4. x1 = r.Next(img.Width)  
  5. Dim x2 As Integer = 
    r.Next(img.Width)  
  6. Dim y1 As Integer = 
    r.Next(img.Height)  
  7. Dim y2 As Integer = 
    r.Next(img.Height)  
  8. g.DrawLine(New Pen(Color.Silver), 
    x1, y1, x2, y2)  
  9. Next i  
  10. Dim font As font  
  11. font = New System.Drawing.Font
    ("Arial", 12)  
  12. Dim brush As System.Drawing.
    Drawing2D.LinearGradientBrush  
  13. brush = New System.Drawing.
    Drawing2D.LinearGradientBrush
    (New Rectangle(0, 0, img.Width, 
    img.Height), Color.Blue, Color.
    Blue, 1.2F, True)  
  14. g.DrawString(vnum, font, brush, 2, 2) 

 

VB.NET生成验证码中画图片的前景噪音点

  1. 'For ii As Integer = 
    0 To 100  
  2. ' Dim x As Integer = 
    r.Next(img.Width)  
  3. ' Dim y As Integer = 
    r.Next(img.Height)  
  4. ' img.SetPixel(x, y, 
    Color.FromArgb(r.Next()))  
  5. 'Next 

画图片的边框线

  1. g.DrawRectangle
    (New Pen(Color.Silver), 
    0, 0, img.Width - 1, 
    img.Height - 1) 

 

在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y)

  1. Dim ms1 As System.IO.MemoryStream  
  2. ms1 = New System.IO.MemoryStream  
  3. img.Save(ms1, System.Drawing.
    Imaging.ImageFormat.Png)  
  4. Response.ClearContent() 
    '需要输出图象信息 要修改HTTP头   
  5. Response.ContentType = "image/Png" 
  6. Response.BinaryWrite(ms1.ToArray())  
  7. g.Dispose()  
  8. img.Dispose()  
  9. Response.End()  
  10. End Sub 


函数名称:rndnum

函数参数:vcodenum--设定返回随机字符串的位数

函数功能:产生数字和字符混合的随机字符串

  1. Function rndnum(ByVal vcodenum)  
  2. '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" 
  3. Dim vchar As String = "2,3,4,5,6,7,
    8,9,A,B,C,D,E,F,G,H,J,K,L,N,P,Q,
    R,S,T,U,X,Y,Z" 
  4. Dim vcarray() As String = Split
    (vchar, ",") '将字符串生成数组  
  5. Dim vnum As String = "" 
  6. Dim i As Byte  
  7. For i = 1 To vcodenum  
  8. Randomize()  
  9. 'vnumvnum = vnum & vcarray(Int(35 * 
    Rnd())) '数组一般从0开始读取,所以这里为35*rnd  
  10. vnumvnum = vnum & vcarray(Int(29 * 
    Rnd())) '数组一般从0开始读取,所以这里为35*rnd  
  11. Next  
  12. Return vnum  
  13. End Function 

VB.NET生成验证码的具体操作方法就为大家介绍到这里。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...