想到网络上应用的网站,我们经常会想到我们上面一般都会有一个验证码,为何会用验证码呢?我觉得目的就是为了防止编写脚本,利用脚本去无限次数的访问,接下来就和大家分享一下,在C#语言中,验证码是如何写出来的。
代码:
前提:我这个是在一个Windows窗体应用中,传进一个pictureBox控件(代码中已将该控件改名为picBox).
//实例化随机数
Random r = new Random();
//字符串的定义
string strnum = "";
//把随机数都存放到这个数组中
for (int i = 0; i < 5; i++)
{
int num = r.Next(10);
//把随机数都存放到这个数组中
strnum += num;
}
//创建一个位图用来存放验证码
Bitmap bm = new Bitmap(100, 30);
//创建这个对象
Graphics g = Graphics.FromImage(bm);
picBox.Image = bm;
//需要五种颜色
Color[] color = new Color[] { Color.Red, Color.Blue, Color.Green, Color.Pink, Color.Black };
//需要五种字体
string[] fontName = new string[] { "幼圆", "华文行楷", "全新硬笔行书简", "楷体", "黑体" };
//遍历每个数字的每个颜色
for (int i = 0; i < 5; i++)
{
g.DrawString(strnum[i].ToString(), new Font(fontName[i], 20), new SolidBrush(color[i]), new Point(i * 20, 0));
}
//画线
for (int i = 0; i < 26; i++)
{
//实例化笔
Pen p = new Pen(Brushes.Gray);
//坐标1
Point p1 = new Point(r.Next(bm.Width), r.Next(bm.Height));
//坐标2
Point p2 = new Point(r.Next(bm.Width), r.Next(bm.Height));
g.DrawLine(p, p1, p2);
}
//画点
for (int i = 0; i < 50; i++)
{
bm.SetPixel(r.Next(bm.Width), r.Next(bm.Height), color[r.Next(5)]);
}
感谢您的阅读,希望这些对您能有所帮助!