想当初对验证码的制作还是比较好奇的,
后来查资料后自已写了一个
如果大家不懂制作验证码可以看看下面的
代码
一个简单的验证码制作
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
this. checknum();
}
public void checknum()
{
Bitmap bm = new Bitmap(100, 40);
Graphics gp = Graphics.FromImage(bm);
gp.Clear(Color.White);
Random r = new Random();
Pen p1 = new Pen(Color.YellowGreen,2);
gp.DrawRectangle(Pens.Black, 0, 0, 99, 39);//画一个矩阵
gp.FillRectangle(new SolidBrush(Color.SeaShell), 0, 0, 99, 39);//填充矩阵
//产生四个随机数
int num1 = r.Next(9);
int num2 = r.Next(9);
int num3 = r.Next(9);
int num4 = r.Next(9);
Session["number"] = num1.ToString()+num2.ToString()+num3.ToString() +num4.ToString();//把随机数存入session(用作对比)
gp.DrawString(num1 + " " + num2 + " " + num3 + " " + num4, new Font("幼圆", 20), Brushes.Blue, 0, 10);//把随机数画出
//作四条随机直线 (干扰线)
for (int i = 1; i < 4; i++)
{
gp.DrawLine(p1, r.Next(20), r.Next(bm.Height), r.Next(80,100), r.Next(bm.Height));
}
//指定某些像数点的颜色 (干扰像素点)
for (int i = 1; i < 100; i++)
{
bm.SetPixel(r.Next(bm.Width), r.Next(bm.Height), Color.Green);
bm.SetPixel(r.Next(bm.Width), r.Next(bm.Height), Color.Red);
}
bm.Save(Response.OutputStream,ImageFormat.Gif);
bm.Dispose();
gp.Dispose();
}
运行结果如下:
当完成后,可以在需要的页面加一个Image控件,然后把Image控件的URL设成验证码所在的页面进行引用,所返回的值将与Session里面存储的值作比较.
(嘿嘿,是不是很简单啊,如果有错大家别拿拖鞋砸我哈)
