你的位置:首页 > ASP.net教程

[ASP.net教程]Winform之GDI绘制验证码

主要功能:点击验证码可更换,输入验证码进行登陆

 

需要导入命名空间System.Drawing;

产生五位的随机字符串:

1        Random random = new Random();2       //产生5个随机字符串3       str = null;4       for (int i = 0; i < 5; i++)5       {6         int j = random.Next(64, 90);7         str = str + (char)j;8       }

画字符串

 1       //创建图片 2       Bitmap bmp = new Bitmap(120,30); 3       //创建GDI对象 4       Graphics g = Graphics.FromImage(bmp); 5       //循环画字符串 6       for (int i = 0; i < str.Length; i++) 7       { 8         Point p = new Point(i*20,0); 9         //随机字体10         string[] fonts = { "宋体", "黑体", "微软雅黑", "隶属", "仿宋", };11         //随机颜色12         Color[] colors = { Color.Red, Color.Aquamarine, Color.Blue, Color.Yellow, Color.YellowGreen };13         //画字符串14         g.DrawString(str[i].ToString(), new Font(fonts[random.Next(0, fonts.Length)], 20, FontStyle.Bold), new SolidBrush(colors[random.Next(0, colors.Length)]), p);15       }        

到这里效果如下:

这时候我们在加入一些线条:

1        for (int i = 0; i < 20; i++)2       {3         Point p1 = new Point(random.Next(0, bmp.Width), random.Next(0, bmp.Height));4         Point p2 = new Point(random.Next(0, bmp.Width), random.Next(0, bmp.Height));5         g.DrawLine(new Pen(Color.Green), p1, p2);6       }

在画一些像素点:

1      //画像素点2       for (int i = 0; i < 500; i++)3       {4         Point p = new Point(random.Next(0, bmp.Width), random.Next(0, bmp.Height));5         bmp.SetPixel(p.X, p.Y, Color.Black);6       }