视觉同盟
点击订阅视觉同盟网站RSS更新 同盟博客(Blog) English

搜图



高级搜索

首页

|

设计资讯

|

平面设计

|

工业设计

|

UI设计

|

CG·动画

|

建筑与环境

|

院校同盟

|

作品集

|

竞赛场

|

设计招聘

|

企业同盟

|

专题

|

搜图

|

社区

|

论坛



柯尼卡美能达中国著名设计公司早晨设计洛可可设计公司 - 国际认可的中国设计品牌

 
标题: [ASP.NET]生成复杂的彩色带噪点验证码函数
allinhands
四星盟友
Rank: 4


UID 283
精华 0
积分 19543
帖子 5686
阅读权限 50
注册 2004-10-14
状态 离线
 
发表于 2004-11-29 00:01  资料  个人空间  主页 短消息  加为好友  添加 allinhands 为MSN好友 通过MSN和 allinhands 交谈
[ASP.NET]生成复杂的彩色带噪点验证码函数

[code:1]                private void CreateImage(string checkCode)
                {
                        int iwidth = (int)(checkCode.Length * 15);
                        System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 25);
                        Graphics g = Graphics.FromImage(image);
                        g.Clear(Color.White);
//定义颜色
                        Color[] c = {Color.Black,Color.Red,Color.DarkBlue,Color.Green,Color.Orange,Color.Brown,Color.DarkCyan,Color.Purple};
//定义字体                        string[] font = {"Verdana","Microsoft Sans Serif","Comic Sans MS","Arial","宋体"};
                        Random rand = new Random();
//随机输出噪点
                        for(int i=0;i<50;i++)
                        {
                                int x = rand.Next(image.Width);
                                int y = rand.Next(image.Height);
                                g.DrawRectangle(new Pen(Color.LightGray, 0),x,y,1,1);
                        }

//输出不同字体和颜色的验证码字符
                        for(int i=0;i<checkCode.Length;i++)
                        {
                                int cindex = rand.Next(7);
                                int findex = rand.Next(5);
                               
                                Font f = new System.Drawing.Font(font[findex], 10, System.Drawing.FontStyle.Bold);
                                Brush b = new System.Drawing.SolidBrush(c[cindex]);
                                int ii=4;
                                if((i+1)%2==0)
                                {
                                        ii=2;
                                }
                                g.DrawString(checkCode.Substring(i,1), f, b, 3+(i*12), ii);
                        }
//画一个边框
                        g.DrawRectangle(new Pen(Color.Black,0),0,0,image.Width-1,image.Height-1);

//输出到浏览器
                        System.IO.MemoryStream ms = new System.IO.MemoryStream();
                        image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
                        Response.ClearContent();
                        Response.ContentType = "image/Jpeg";
                        Response.BinaryWrite(ms.ToArray());
                        g.Dispose();
                        image.Dispose();
                }[/code:1]


参数checkCode就是生成的验证码.生成验证码函数请自行编写.
示例如下:



查看积分策略说明
附件
2004-11-29 00:01
image.jpg (0 Bytes)
 




顶部
[广告] 惠普彩激以旧换新活动
 

 


当前时区 GMT+8, 现在时间是 2008-12-2 06:35
京ICP许可证041326号
电子公告服务(BBS)审批[2004]字第1771号函


版权所有 © 2004-2008 视觉同盟(VisionUnion.com)
Copyright © 2004-2008 VisionUnion.com Incorporated. All rights reserved

视觉同盟旗下子站:创意企业同盟 | 中国创意设计人才网 | 视觉同盟社区 | 视觉同盟论坛

Powered by Discuz! 5.5.0  © 2004-2008 VisionUnion Inc.
Processed in 0.057608 second(s), 7 queries

清除 Cookies - English - 关于我们 - 联系我们 - 合作伙伴 - 艺术顾问 - 视觉同盟 - Archiver - WAP