
看到很多第三方控件,感觉很不错,自己就写了验证码控件,可以自己设置很多属性,大概代码贴出来,要整个代码就给我邮件,很感谢指出不好的地方!
namespace Check_Code


{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Drawing.Imaging;


/**//// <summary>
/// 验证码控件
/// </summary>
public class Check_Code : System.Web.UI.UserControl

{
protected System.Web.UI.WebControls.Image Image1;


图片私有变量 初始设置#region 图片私有变量 初始设置

//验证码长度
private int length=4;

//图片清晰度
private int fineness=95;

//图片宽度
private int width=60;

//图片高度
private int height=20;

//字体家族名称
private string fontfamily="Verdana";

//字体大小
private int size=12;
//
// //字体颜色
// private string color="Blank";

//字体样式
private int style=3;

//绘制起使坐标X
private int x=0;

//绘制起使坐标Y
private int y=0;

#endregion


图片基本属性#region 图片基本属性

//验证码长度属性
public int Length

{

get
{ return length;}

set
{ length=value;}
}

//图片清晰度属性
public int Fineness

{

get
{ return fineness;}

set
{ fineness=value;}
}
//图片宽度属性
public int Width

{

get
{return width;}

set
{width=value;}
}

//图片高度属性
public int Height

{

get
{return height;}

set
{height=value;}
}

//字体家族名称
public string FontFamily

{

get
{return fontfamily;}

set
{fontfamily=value;}
}

//字体大小
public int Size

{

get
{return size;}

set
{size=value;}
}

// //字体颜色
// public string Color
// {
// get{return color;}
// set{color=value;}
// }

//字体样式
public int Style

{

get
{return style;}

set
{style=value;}
}

//绘制起使坐标X
public int X

{

get
{return x;}

set
{x=value;}
}

//绘制起使坐标Y
public int Y

{

get
{return y;}

set
{y=value;}
}

#endregion


判断符合范围#region 判断符合范围
public void Checked_Or()

{
if(Length>16||Length<4)

{
Response.Write("<script>alert('验证码长度要在4-16之间')</script>");
}

if(Fineness>100||Fineness<0)

{
Response.Write("<script>alert('验证码图片清晰度要在0-100之间')</script>");
}
if(Width>200||Width<20)

{
Response.Write("<script>alert('验证码图片宽度要在20-200px之间')</script>");
}

if(Height>100||Height<10)

{
Response.Write("<script>alert('验证码图片高度要在10-100之间')</script>");
}

if(Size>72||Size<6)

{
Response.Write("<script>alert('验证码字体大小要在6-72之间')</script>");
}
}
#endregion


随机生成字母或数字 并保存到session#region 随机生成字母或数字 并保存到session

public string RandowCode()

{
string randowcode="";
Random rm=new Random();
for(int i=0;i<Length;i++)

{
//A-Z
int n=rm.Next(26);
randowcode+=(char)(n+65);
}
Session.Add("code",randowcode);
return randowcode;
}
#endregion


绘制验证码图片#region 绘制验证码图片
public void DrawCode(Bitmap bt,string Code)

{
//获取绘制器对象 (笔)
Graphics g=Graphics.FromImage(bt);
//绘制字体
Font font=new Font(this.FontFamily,this.Size,GetFontStyle());
//绘制验证码图像
g.DrawString(Code,font,Brushes.Red,X,Y);
//保存验证码图片 准备输出
bt.Save(Server.MapPath("img")+"\\Img.gif",ImageFormat.Gif);

}
#endregion


字体样式#region 字体样式
public FontStyle GetFontStyle()

{
if(this.Style==1)

{
return FontStyle.Bold;
}
else if(this.Style==2)

{
return FontStyle.Italic;
}
else if(this.Style==3)

{
return FontStyle.Bold | FontStyle.Italic;
}
else

{
return FontStyle.Regular;
}
}
#endregion


给图片设置随机干扰#region 给图片设置随机干扰
public void DisturbBitmap(Bitmap bt)

{
Random rm=new Random();
for(int i=0;i<bt.Width;i++)

{
for(int j=0;j<bt.Height;j++)

{
if(rm.Next(100)<this.Fineness)

{
bt.SetPixel(i,j,Color.White);
}
}
}
}
#endregion

private void Page_Load(object sender, System.EventArgs e)

{
//调用判断符合范围函数
Checked_Or();
//返回随机码
string Code=RandowCode();
//生成图片
Bitmap bt=new Bitmap(Width,Height);
//给图片设置干扰
DisturbBitmap(bt);
//绘制验证码图片
DrawCode(bt,Code);

}



Web 窗体设计器生成的代码#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
}
}
