We do not always find visible happiness in proportion to visible virtue

梦幻白桦林

SHARE

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  14 Posts :: 58 Stories :: 62 Comments :: 0 Trackbacks

公告

常用链接

留言簿(5)

搜索

  •  

最新随笔

最新评论

阅读排行榜


以前在网上找到了很多关于中文验证码的文章(园子里也有,大家自己去找吧),但是都没有调测成功,总出现
The target '__Page' for the callback could not be found or did not implement ICallbackEventHandler不能ICallbackEventHandler回掉的错误,我进行了一下修正并整理,现在可以实现了中文验证码无刷新的操作,现特把全部源码分享给大家

核心源码

 1    public partial class Image : System.Web.UI.Page
 2    {
 3    protected void Page_Load(object sender, EventArgs e)
 4    {
 5        CreateCheckCodeImage(GenCode(4));
 6    }

 7    /**//// <summary>
 8    /// '产生随机字符串
 9    /// </summary>
10    /// <param name="num">随机出几个字符</param>
11    /// <returns>随机出的字符串</returns>

12    private string GenCode(int num)
13    {
14        string str = "的一是在不了有和人这中大为上个国我以要他时来用们...";
15        char[] chastr = str.ToCharArray();
16       
17        string code = "";
18        Random rd = new Random();
19        int i;
20        for (i = 0; i < num; i++)
21        {
22            //code += source[rd.Next(0, source.Length)];
23            code += str.Substring(rd.Next(0, str.Length), 1);
24        }

25        return code;
26
27    }

28
29    /**//// <summary>
30    /// 生成图片(增加背景噪音线、前景噪音点)
31    /// </summary>
32    /// <param name="checkCode">随机出字符串</param>

33    private void CreateCheckCodeImage(string checkCode)
34    {
35        if (checkCode.Trim() == "" || checkCode == null)
36            return;
37        Session["Code"= checkCode; //将字符串保存到Session中,以便需要时进行验证
38        System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)(checkCode.Length * 21.5), 22);
39        Graphics g  = Graphics.FromImage(image);
40        try
41        {
42            //生成随机生成器
43            Random random = new Random(); 
44
45            //清空图片背景色
46            g.Clear(Color.White);  
47
48            // 画图片的背景噪音线
49            int i;
50            for (i = 0; i < 25; i++)
51            {
52                int x1 = random.Next(image.Width);
53                int x2 = random.Next(image.Width);
54                int y1 = random.Next(image.Height);
55                int y2 = random.Next(image.Height);
56                g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
57            }

58
59            Font font = new System.Drawing.Font("Arial"12, (System.Drawing.FontStyle.Bold));
60            System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(00, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2Ftrue);
61            g.DrawString(checkCode, font, brush, 22);
62
63            //画图片的前景噪音点
64            g.DrawRectangle(new Pen(Color.Silver), 00, image.Width - 1, image.Height - 1);
65            System.IO.MemoryStream ms = new System.IO.MemoryStream();
66            image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
67            Response.ClearContent();
68            Response.ContentType = "image/Gif";
69            Response.BinaryWrite(ms.ToArray());
70
71        }

72        catch
73        {
74            g.Dispose();
75            image.Dispose();
76        }

77
78    }

希望该源码只是一个抛砖引玉的作用,你可以进行修改,比如说改中文字库,字体背景噪音等等
默认帐号密码均为51aspx,这里用户登录只是一个验证的例子,没有其他功能

作者51aspx
完整源码下载地址http://www.51aspx.com/CV/ZhongWenYanZhengMa



51aspx.com 2007-04-21 11:22 发表评论
posted on 2007-04-21 11:22 colys 阅读(334) 评论(0)  编辑 收藏 引用 所属分类: C#.Net

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理