说明:Login.aspx是登陆页面;image.aspx是生成验证码的页面。
步骤:
(1)在Login.aspx添加一个ImageButton控件,用于插入一个产生验证码的图片,该验证码图片在登陆页面加载的时候就要加载。故在Login.aspx.cs的Page_Load事件中添加如下代码:
protected void Page_Load(object sender, EventArgs e)
{
this.ImageButton1.ImageUrl="image.aspx";//image.aspx是一个显示验证码的Web页面
}
(2)image.aspx
在image.aspx.cs中自定义两个事件,分别是private string GenCode(int num)和private void GenImg(string code)事件。private string GenCode(int num)事件用于产生验证码;private void GenImg(string code)事件用于产生图片。Page_Load事件中调用产生的图片验证码,从而可以显示验证码。image.aspx.cs文件的程序源代码如下:
using System.IO; //定义输入输出命名空间。
using System.Drawing; //定义画板命名空间。
protected void Page_Load (object sender, EventArgs e)
{
this.GenImg(this.GenCode(4));//调用方法得到验证码。
Session["image"]=this.GenCode(4);//将验证码存储到Session中,以便需要时进行验证。
}
private string GenCode(int num)
{//创建GenCode()方法。
string[] source={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K",
"L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
string code="";//初始化一个字符串变量code用以保存验证码字符串。
Random rd=new Random();//声明一个随机数对象。
for(int i=0;i<num;i++)
{
code+=source[rd.Next(0,source.Length)];//保存随机到的验证码。
}
return code;//此方法返回的数值。
}
private void GenImg(string code)
{//此方法用于绘画验证码背景图。
//定义一个画板Bitmap
Bitmap myPalette=new Bitmap(60,20);//长宽的值。
//在画板上定义绘图的实例Graphics
Graphics gh=Graphics.FromImage(myPalette);
//定义一个矩形
Rectangle rc=new Rectangle(0,0,60,20);
//填充矩形
gh.FillRectangle(new SolidBrush(Color.Blue),rc);
//在矩形内画出字符串Graphics.DrawString()
gh.DrawString(code,new Font("宋体",16),new SolidBrush(Color.Yellow),rc);
//将图片显示出来
myPalette.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
gh.Dispose();
myPalette.Dispose();
}