简单验证码

public void ProcessRequest(HttpContext context)
        {
            //0.0得到字符串
            string vcode = GetVcode(4);
            //0.1将验证码保存到Session中
            //context.Session[Kit.vcode]=vcode;
            context.Session[Kit.vcode] = vcode;
            //1.0准备一个画板
            using (Image img=new Bitmap(60,20))
            {
                //2.0准备一个画家对象
                using (Graphics g=Graphics.FromImage(img))
                {
                    //将验证码的背景色变成白色
                    g.Clear(Color.White);
                    //画边框
                    g.DrawRectangle(Pens.Black, 0, 0, img.Width - 1, img.Height - 1);
                    //画一些干扰点
                    DrawPoint(g,img,50);
                    //将验证码画到图片上
                    g.DrawString(vcode,new Font("宋体",16,FontStyle.Bold),Brushes.Red,0,0);
                    DrawPoint(g, img, 50);
                }
                //将图片保存到输出流
                img.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
            }
            
        }
        /// <summary>
        /// 画干扰点
        /// </summary>
        /// <param name="g"></param>
        /// <param name="img"></param>
        /// <param name="p"></param>
        private void DrawPoint(Graphics g, Image img, int p)
        {
            //得到x,y坐标
            int x;
            int y;
            //得到点
            Point p1;
            Point p2;
            for (int i = 0; i < p; i++)
            {
                x = r.Next(0,img.Width);
                y = r.Next(0,img.Height);
                //根据xy生成点
                p1 = new Point(x,y);
                p2 = new Point(x+1,y+1);
                //连接两点
                g.DrawLine(Pens.Black,p1,p2);

            }
        }
         Random r = new Random();
        /// <summary>
        /// 得到字符串
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        private string GetVcode(int p)
        {
            string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,O,P,Q,R,S,T,U,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,s,t,u,w,x,y,z";
            //切割字符串
            string[] array = allChar.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            //创建验证码字符串
            string vcode = string.Empty;
            for (int i = 0; i < p; i++)
            {
                int index = r.Next(0,array.Length);
                vcode += array[index];
            }
            return vcode;
        }

 

posted @ 2015-09-03 23:55  DreamGiant  阅读(706)  评论(0编辑  收藏  举报