c#验证码

来源:互联网 发布:mysql中的存储过程 编辑:程序博客网 时间:2024/06/04 23:19

1.生成5位随机验证码

            Random rd = new Random();            string str = "";            int number = 0;            char code;            for (int i = 0; i < 5; i++)            {                number = rd.Next();                if (number % 2 == 0)                    code = (char)('0' + (char)(number % 10));                else                    code = (char)('A' + (char)(number % 26));                str += code.ToString();            }

2.创建GDI对象

            Bitmap bmp = new Bitmap(100, 35);            Graphics g = Graphics.FromImage(bmp);            for (var j = 0; j < 5; j++)            {                Point p = new Point(j * 20, 6);                g.DrawRectangle(Pens.Black, new Rectangle(0, 0, bmp.Width - 1, bmp.Height - 1));                string[] fonts = { "微软雅黑", "宋体", "黑体", "隶书", "仿宋" };                Color[] colors = { Color.Yellow, Color.Blue, Color.Black, Color.Red, Color.Green };                g.DrawString(str[j].ToString(), new Font(fonts[rd.Next(0, 5)], 15, FontStyle.Bold), new SolidBrush(colors[rd.Next(0, 5)]), p);            }

3.画干扰线和干扰点

            //画干扰线            for (var i = 0; i < 20; i++)            {                Point p1 = new Point(rd.Next(0, bmp.Width), rd.Next(0, bmp.Height));                Point p2 = new Point(rd.Next(0, bmp.Width), rd.Next(0, bmp.Height));                g.DrawLine(new Pen(Brushes.Green), p1, p2);            }            picbox.Image = bmp;            //画干扰点            for (var i = 0; i < 300; i++)            {                Point p1 = new Point(rd.Next(0, bmp.Width), rd.Next(0, bmp.Height));                bmp.SetPixel(p1.X, p1.Y, Color.Black);            }





0 0