protected void btn_cantSee_Click(object sender, EventArgs e)
{
    this.SerialNumber.Create();
}点击“看不清”按钮,重新生成验证码,可有的时候是4个,有的时候是5个,有的时候是7个字符,不知道能否控制让它总显示4个字符?

解决方案 »

  1.   


    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            验证码:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:Image ID="Image1" runat="server" ImageUrl="~/Valid.aspx"/>
            <a href="javascript:ref();">看不清</a><br />
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="确定" /></div>
        </form>
    </body>
    </html>
    <script>
    function ref()
    {
        document.getElementById("Image1").src="Valid.aspx" ;  
    }//valid.aspx页面cs文件
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.Drawing.Drawing2D;
    public partial class Valid : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //生成随机字符串
            string tmp = Send(4); //4位数
           Session["tmp"] = tmp;//将验证码存入session,以便校验验证码输入是否正确
            //画图
            DrawImage(tmp);    }    private void DrawImage(string str)
        {
            //定义一个图片对象
            Bitmap bm = new Bitmap(60, 25);        //Image bm = Image.FromFile(@"E:\Example\SendValid\mm.gif");
            //定义一个画板
            Graphics g = Graphics.FromImage(bm);
            //设置画板背景颜色
            g.Clear(Color.White);        //定义字体对象
            Font fn = new Font("Arial Black", 10);
            //定义一个画笔
            SolidBrush sb = new SolidBrush(Color.Black);        //将字符串画在图片上
            g.DrawString(str, fn, sb, 4, 3);        DrawLine(g);        //将图片以JPEG的格式保存到输出流中
            bm.Save(Response.OutputStream, ImageFormat.Jpeg);
            bm.Dispose();
            Response.End();
        }    /// <summary>
        /// 画线
        /// </summary>
        private void DrawLine(Graphics g)
        {
            //定义一个画笔
            SolidBrush sb = new SolidBrush(Color.Blue);
            Random rand = new Random(DateTime.Now.Millisecond);
            for (int i = 0; i < 7; i++)
            {
                //随机生成起始点
                Point d1 = new Point(rand.Next(40), rand.Next(40));
                //随机生成终止点
                Point d2 = new Point(rand.Next(40), rand.Next(40));
                //将两点画成一条直线
                g.DrawLine(new Pen(sb), d1, d2);
            }
        }
        private string Send(int n)
        {
            //定义随机出现的字符,可自己增加,修改数组长度后,下面int j = rand.Next(12);这里的12需要相应修改。
            string[] str = new string[]{"a","b","c","d","王","北","1","2","3","4","5","6","7"};
            string temp = "";
            //定义随机对象
            Random rand = new Random(DateTime.Now.Millisecond);
            for (int i = 0; i < n; i++)
            {
                //随机生成下标。
                int j= rand.Next(12);
                //获取相应字符
                temp += str[j];
            }
            return temp;
        }
    }</script>
      

  2.   

    我想知道这个控件在.net平台上用的吗?
      

  3.   

    4楼的哥们 贴代码自己先试试在贴好吗? 除了几处错…… 并且 该方法IE可用 FF Chrome都乱码……
      

  4.   

    谁能告诉我WebValidates.dll在哪里下载,我CSDN没积分了
      

  5.   

     do
            {
                snCode.Create();
            } while (snCode.SN.Length != 4);
            Response.Write(snCode.SN.Length);