<%@ Page Language="VB" Debug="true" %>
 
<%@ import namespace="System"%> 
 
<%@ import namespace="System.io"%> 
 
<%@ import namespace="System.Drawing"%> 
 
<%@ import namespace="System.Drawing.Imaging"%> 
 
<%@ import namespace="System.Drawing.Bitmap"%> 
 
<%@ import namespace="System.Drawing.Graphics"%> 

<Script runat="server">
Dim RanNum As New Random
Dim intI as Integer

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
        CreateRanPic()
End Sub


Sub CreateRanPic()
    
'在此处放置初始化页的用户代码
    '声明bitmap对象
    'Bitmap对象就相当于一个画布,有了画布我们才可以在上面做出图形
    Dim objBitmap As Bitmap
    
Dim i As Integer
    
'声明随机种子,用来随机产生1000个象素点的坐标
    Dim objRandom As System.Random
    
Dim strRan As String = RndNum(6)  '产生随机6位数
    ' Create Bitmap
    objBitmap = New Bitmap(10030)
    
' Set 1000 Pixels
    objRandom = New System.Random
    
For i = 1 To 7000
    objBitmap.SetPixel(objRandom.Next(
100), objRandom.Next(30), Color.White)
    
Next

   
'Dim ms as MemoryStream 
   Dim g as Graphics 
   g
=Graphics.FromImage(objBitmap)
   
'----------------------
   '建立显示的字体(Bold:加粗文本;Italic:倾斜文本:Regular:普通文本;Strikeout:中间有直线通过的文本;Underline:带下划线的文本.)
    Dim font as Font =new Font("Times New Roman"18, FontStyle.Italic)
   
'----------------------
   g.DrawString(strRan,Font,(New SolidBrush(color.black)),1,1)'在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y) 
  'ms=New MemoryStream() 
   objBitmap.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Gif) 
   
'objBitmap.Save(ms,System.Drawing.Imaging.ImageFormat.Gif) 
   'Response.ClearContent() '需要输出图象信息 要修改HTTP头 
   'Response.ContentType="image/Png" 
   'Response.BinaryWrite(ms.ToArray()) 
   g.Dispose() 
   objBitmap.Dispose() 
   Response.End()
End Sub



'-------------------------------------------- 
'
函数名称:RndNum 
'
函数参数:VCodeNum--设定返回随机字符串的位数 
'
函数功能:产生数字和字符混合的随机字符串 
Function RndNum(VcodeNum) 
      
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,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" 
      
dim VcArray() as string=split(Vchar,","'将字符串生成数组 
      dim VNum as string="" 

      
dim i as byte 
      
For i=1 to VcodeNum 
          
Randomize 
'-------取得随机数-------------------------
          '方法1:
          VNum=VNum + VcArray(Int(61*Rnd)) '数组一般从0开始读取,所以这里为61*Rnd (共有62个字符,从0开始读,所以就为61)
          '方法2:
          'VNum=VNum + VcArray(CreateRandomNumber()) '这是自已改写的代码,使用Random.Next来取得随机数.
'
-------------------------------
      Next             
      Session(
"ValidateCode")=VNum  '保存验证码
      Return VNum 
End Function
 

Function CreateRandomNumber() as Integer
         intI 
= RanNum.Next( 062 )
         
Return intI
End Function


</Script>