吉吉于

C#每天抄一点(14):生成随机验证码

昨天没写完寝室就断电了,今天发14和15节。咬牙坚持下去撒……

 

01 /*
02 * 由SharpDevelop创建。
03 * 用户: Lazynight
04 * 日期: 2011/10/15
05 * 时间: 20:10
06 *
07 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
08 */
09 using System;
10 using System.Collections.Generic;
11 using System.Drawing;
12 using System.Windows.Forms;
13
14 namespace Lazy14_随机生成验证码
15 {
16     public partial class MainForm : Form
17     {
18         public MainForm()
19         {
20             InitializeComponent();
21         }
22         private string LazyCode()
23         {
24             int num;
25             char code;
26             string lazy_code=String.Empty;
27             Random lazy_ran=new Random();
28             for(int i=;i<4;i++)
29             {
30                 num=lazy_ran.Next();
31                 if(num%2==)
32                     code=(char)(’0′+(char)(num%10));//随机生成0~9,即00,01,02,03……09
33                 else
34                     code=(char)(‘A’+(char)(num%26));//随机生成A~Z,即AA,AB,AC …… AZ
35                 lazy_code+=” “+code.ToString();   //lazy_code是一个四位随机字符串
36             }
37             return lazy_code;
38         }
39         private void LazyImage(string lazy_code)////创建由随机数字生成的图片
40         {
41             if(lazy_code==null || lazy_code.Trim()==String.Empty)
42             return;
43             System.Drawing.Bitmap image=new System.Drawing.Bitmap((int)Math.Ceiling((lazy_code.Length*50.0)),50);
44             //新建一个位图,宽度为每个字节50*4个,高度为50
45             Graphics Lazy_pic =Graphics.FromImage(image);//从画布中取出图片
46             Random lazy_ran=new Random();//生成随机生成器
47             Lazy_pic.Clear(Color.White);//清空图片背景色
48             for(int i=;i<100;i++)  //图片背景噪音线,通过i控制密度
49             {
50                 int x1=lazy_ran.Next(image.Width);
51                 int x2=lazy_ran.Next(image.Width);
52                 int y1=lazy_ran.Next(image.Height);
53                 int y2=lazy_ran.Next(image.Height);
54                 Lazy_pic.DrawLine(new Pen(Color.Black),x1,y1,x2,y2);
55             }
56             Font font=new System.Drawing.Font(“Arial”,35,(System.Drawing.FontStyle.Bold));
57             Lazy_pic.DrawString(lazy_code,font,new SolidBrush(Color.Red),4,2);
58             for(int i=;i<7000;i++)//图片噪点,通过i控制密度
59             {
60                 int x=lazy_ran.Next(image.Width);
61                 int y=lazy_ran.Next(image.Height);
62                 image.SetPixel(x,y,Color.FromArgb(lazy_ran.Next()));//分配为随机颜色
63             }
64             Lazy_pic.DrawRectangle(new Pen(Color.Silver),,,image.Width,image.Height);
65             this.pictureBox1.BackgroundImage=image;
66
67         }
68         void MainFormLoad(object sender, EventArgs e)
69         {
70             LazyImage(LazyCode());
71         }
72
73         void Button1Click(object sender, EventArgs e)
74         {
75             LazyImage(LazyCode());
76         }
77
78         void Button2Click(object sender, EventArgs e)
79         {
80             Application.Exit();
81         }
82     }
83 }

下载源码

转载请注明:于哲的博客 » C#每天抄一点(14):生成随机验证码