看着教学视频学着做了一个验证码
首先建立一个C# windows窗体应用程序
然后在窗体中添加一个PictureBox和Button控件
接着给Button按钮注册一个单机事件,开始写代码
void IdentifyingCode()
{
//创建一个随机数对象
Random r = new Random();
string str = null;
//随机生成五个0~9的随机数,并保存在字符串str中
for (int i = 0; i < 5; i++)
{
int rNumber = r.Next(0, 10);
str = str + rNumber;
}
//创建位图对象,设置图片的宽度和高度,Bitmap继承了Image
Bitmap bmp = new Bitmap(110, 30);
//创建GDI对象,FromImage参数需要的是Image对象,Bitmap继承了Image,所以可以用Bitmap对象做参数
Graphics g = Graphics.FromImage(bmp);
//指定验证码的随机字体
string[] fonts = { "微软雅黑", "宋体", "黑体", "楷体", "仿宋" };
//指定验证码的随机颜色
Color[] colors = { Color.Black, Color.Red, Color.Blue, Color.Purple, Color.HotPink };
//将产生的字符串画到图片上去
for (int i = 0; i < 5; i++)
{
//创建点对象,表示随机数的位置
Point point = new Point(i * 20, r.Next(0, 10));
//参数1是要画的字符串,
//参数2是字体对象,
//参数3是字体颜色,创建一个单色画笔对象,其构造函数参数可以是Color对象,
//参数4是点对象,不能随机给,防止重叠
g.DrawString(str[i].ToString(), new Font(fonts[r.Next(0, 5)], r.Next(15, 19),
FontStyle.Bold), new SolidBrush(colors[r.Next(0, 5)]), point);
}
//在图片中画直线
for (int i = 0; i < 20; i++)
{
//创建两个点对象,来确定一条直线
Point p1 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
Point p2 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
g.DrawLine(new Pen(Brushes.Green), p1, p2);
}
//在图片中加上一些像素点
for (int i = 0; i < 300; i++)
{
Point p = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
bmp.SetPixel(p.X, p.Y, Color.Black);
}
//将图片镶嵌到pictureBox中
pictureBox1.Image = bmp;
}
效果如图: