随机生成验证码

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string s = 随即字符方法(4);
        Session["CheckCode"] = s;
        CreateImage(s);
    }
    private string 随即字符方法(int CodeCount)
    {
        string allCode = "0,1,2,3,4,5,6,7,8,9,q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m,Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M";
        //设置随即数的字符内容范围
        string[] allCodeArray = allCode.Split(',');
        //将字符串

        Random ran=new Random();
        //定义一个随机类

        string randomStr = null;
        //for (int i=0;i<)
        for (int i = 0; i < CodeCount; i++)//生产几个随即数
        {
            int t = ran.Next(61);//产生0-61之间的随即数用变量t来接收这个产生的随即数
            randomStr += allCodeArray[t].ToString();//将随机产生的字符累加起来
        }
        return randomStr;
    }

    private void CreateImage(string checkCode)//将生成的验证码转化为图片的方法,参数是随机生成的验证码
    {
        int iwidth = (int)checkCode.Length * 15;
        //定义一个锁生成图片的大概的宽度,以每个字母大概15像素来计算
        Bitmap image = new Bitmap(iwidth, 30);//实例化一个位图的对象,宽是iwidth,高是30像素
        Graphics g = Graphics.FromImage(image);
        //实例化一个画布对象g,该画布的区域就是image的区域,就是说只在宽iwidth,高20的地方画验证码的图片
        Font f = new Font("Arial", 15, FontStyle.Bold);//定义一个验证码的字体
        SolidBrush b=new SolidBrush(Color.White);//初始化一个画刷
        g.Clear(Color.Red);//将背景颜色设置为红色
        g.DrawString(checkCode, f, b, 3, 3);//使用DrawString方法把字符串checkCode画在画布个g上

        Pen bp = new Pen(Color.Blue, 0);//定义一个bp用来画 验证码的干扰线

        Random r1 = new Random();
        int t = r1.Next(1, 4);
        for (int i = 0; i < t; i++)
        {
            int y = r1.Next(image.Height);
            //随机产生一个线的高度,该线的高度不能超出图片的高度
            g.DrawLine(bp, 0, y, image.Width, y);//从左到右将线画在高度为y的直线上
        }

        MemoryStream ms = new MemoryStream();//在网页程序中要想使用GDI+画图必须使用流
        image.Save(ms, ImageFormat.Jpeg);//将画好的位图image保存的格式是Jpeg
        Response.ClearContent();//指定内存的缓冲区
        Response.ContentType = "image/Jpeg";//指定本页面生成验证码的图片是Jpeg格式
        Response.BinaryWrite(ms.ToArray());
        //使用内存流保存图片完毕后销毁内存流(将内存流写成二进制)
        g.Dispose();
        image.Dispose();//销毁对象节约资源
    }
}

 

 

 

使用的页面
使用的页面

 


<div class="text">注册验证</div>    
        <table class="style1">
       
            <tr style="line-height:20px;">
                <td style="text-align: right; width:150px;">
                    验证码:</td>
                <td style="width:70px;">
                    <asp:TextBox ID="Txt_Code" runat="server" Width="60px"></asp:TextBox>          
                </td>
                <td style="width: 30px; height: 20px">
     <img runat="server" id= "Image1" alt="验证码" style="height:20px; width:35px;"/>
                </td>
                <td>
                 <input type="button" οnclick= "document.getElementById( 'Image1').src+= '? '; "   value= "换一个"/> 
                </td>
            </tr>
            </table> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值