简单验证码

许多网站都会有验证码输入。今天就写个简单验证码控件,新建一个固定图片作为画布,在画布画上随机的4个字符,保存图片。用pictureBox控件装载该图片

效果图:

外面调用CreateYZM()方法生成验证码,Code属性获取验证码的值,用于验证判断使用

每点击验证码,都会重新生成

代码如下:

 1 //验证码
 2         public string Code { get;private set; }
 3         //验证码长度
 4         private int length = 4;
 5 
 6 
 7         //是否有噪点
 8         private bool hasZaoDian = true;
 9         public bool HasZaoDian { get; set; }
10 
11         string str = "asdfghjklzxcvbnmqwertyuiopQWERTYUIOPLKJHGFDSAZXCVBNM1234567890";
12         Random rd = new Random();
13         public void CreateYZM()
14         { 
15            Bitmap image =new Bitmap(65,23);
16            Graphics gc =  Graphics.FromImage(image);
17            gc.Clear(Color.YellowGreen);
18            char[] codeChar = str.ToCharArray();
19            int index = 0;
20            StringBuilder code = new StringBuilder();
21            for ( int i = 0 ; i < length ;i++ )
22            {
23               index = rd.Next(0,str.Length);
24               code.Append(codeChar[index].ToString());
25            }
26            Code = code.ToString();
27            gc.DrawString(code.ToString() , new Font("Couriew New" , 14f , FontStyle.Bold) , new SolidBrush(Color.Red) , new PointF(2 , 1));
28            if ( hasZaoDian )  //是否画噪点,默认yes
29            {
30                for ( int i = 0 ; i < 80 ; i++ )
31                {
32                    int x = rd.Next(image.Width);
33                    int y = rd.Next(image.Height);
34                    image.SetPixel(x , y , Color.FromArgb(rd.Next()));
35                }
36            }
37            pictureBox1.Image = image;
38            gc.Dispose();
39         }
40 
41         private void pictureBox1_Click(object sender , EventArgs e)
42         {
43             CreateYZM();
44         }
原文地址:https://www.cnblogs.com/bbthome/p/3386366.html