职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1228|回复: 0

ASP.net 验证码(C#)

[复制链接]
梦段桥 发表于 2007-8-28 15:15 | 显示全部楼层 |阅读模式
ASP.net 验证码(C#)
/* Copyright all(c) 2005 ZhongFeng, http://blog.csdn.net/SW515 */
public class ValidateCode : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
  this.CreateCheckCodeImage(GenerateCheckCode());
}

#region web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
  //
  // CODEGEN: 该调用是 asp.NET web 窗体设计器所必需的。
  //
  InitializeComponent();
  base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{  
  this.Load += new System.EventHandler(this.Page_Load);
}
#endregion

private string GenerateCheckCode()
{
  int number;
  char code;
  string checkCode = String.Empty;

  System.Random random = new Random();

  for(int i=0; i<5; i++)
  {
  number = random.Next();

  if(number % 2 == 0)
   code = (char)(&#39;0&#39; + (char)(number % 10));
  else
   code = (char)(&#39;A&#39; + (char)(number % 26));

  checkCode += code.ToString();
  }

  Response.Cookies.Add(new HttpCookie(\"CheckCode\", checkCode));

  return checkCode;
}

private void CreateCheckCodeImage(string checkCode)
{
  if(checkCode == null || checkCode.Trim() == String.Empty)
  return;

  System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
  Graphics g = Graphics.FromImage(image);

  try
  {
  //生成随机生成器
  Random random = new Random();

  //清空图片背景色
  g.Clear(Color.White);

  //画图片的背景噪音线
  for(int i=0; i<25; i++)
  {
   int x1 = random.Next(image.Width);
   int x2 = random.Next(image.Width);
   int y1 = random.Next(image.Height);
   int y2 = random.Next(image.Height);

   g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
  }

  Font font = new System.Drawing.Font(\"Arial\", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
  System.Drawing.Drawing2D.LinearGradientBrush brush =

System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
  g.DrawString(checkCode, font, brush, 2, 2);

  //画图片的前景噪音点
  for(int i=0; i<100; i++)
  {
   int x = random.Next(image.Width);
   int y = random.Next(image.Height);

   image.SetPixel(x, y, Color.FromArgb(random.Next()));
  }

  //画图片的边框线
  g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);

  System.IO.MemoryStream ms = new System.IO.MemoryStream();
  image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
  Response.ClearContent();
  Response.ContentType = \"image/Gif\";
  Response.BinaryWrite(ms.ToArray());
  }
  finally
  {
  g.Dispose();
  image.Dispose();
  }
}
}
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-15 09:26 , Processed in 0.136932 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表