验证码(validatacode)

来源:互联网 发布:淘宝助手运费模板 编辑:程序博客网 时间:2024/06/15 19:01
在ASP.NET中,一般借助System.Drawing和System.Drawing.Imaging命名空间提供的方法在页面中绘制一幅图像,并随机产生一些数字和字符,通过参数随机产生……,同时利用Sessin或公共变量中,在用户输入时,自动进行比较,并决定执行什么操作。

//随机数的产生

private string CreateValidateCode()
        {
            string validateCode = "";
            Random random = new Random();
            for (int i = 0; i < codelen; i++)
            {
                int n = random.Next(10);
                validateCode += n.ToString();
            }
            Session["vcode"] = validateCode;
            return validateCode;
        }

 


        //背景图片的产生
        private void DisturbBitmap(Bitmap bitmap)
        {
            Random random = new Random();
            for (int i = 0; i < bitmap.Width; i++)
            {
                for (int j = 0; j < bitmap.Height; j++)
                {
                    if (random.Next(90)<=this.fineness)
                    {
                        bitmap.SetPixel(i, j, Color.LightGray);         //SetPixel()是Bitmap对象的一个方法,他在制定的坐标点设置颜色并绘制点
                    }
                }
            }
       
        }

 

  //将验证码绘制到背景图片上
        private void DrawValidateCode(Bitmap bitmap, string validateCode)
        {
            Graphics g = Graphics.FromImage(bitmap);
            Font font = new Font(fontFamily, fontSize, FontStyle.Bold);
            g.DrawString(validateCode, font, Brushes.Black, posx, posy);
       
        }

//在页面初始化时产生验证码
      protected void Page_Load(object sender, EventArgs e)
        {
            string validateCode = CreateValidateCode();
            Bitmap bitmap = new Bitmap(imgWidth, imgHeight);
            DisturbBitmap(bitmap);
            DrawValidateCode(bitmap, validateCode);
            bitmap.Save(Response.OutputStream, ImageFormat.Gif);
        }
    }

0 0