使用GDI+绘制数字验证码(C#)

如何在Winform中使用GDI+绘制一个验证码,如图
在这里插入图片描述

  1. 利用随机数生成一个5位数字的验证码,保存在str这个字符串中
// 建立随机数
Random r = new Random();
str = null;
for (int i = 0; i < <数字数量>; i++)
{
	str += r.Next(0, 10);
}
  1. 创建GDI+对象和bmp对象
// 创建bmp位图对象
Bitmap bmp = new Bitmap(<bmp的大小>);

// 创建GDI+对象
Graphics autocode = Graphics.FromImage(bmp);
  1. 绘制验证码,需要给了多种字体和颜色,然后绘制时每个数字都随机选择其中之一
//画验证码
string[] font = { "等线", "微软雅黑", ……};
Color[] color = { Color.Yellow, Color.Red, ……};
for (int i = 0; i < <字体和颜色的数量n>; i++)
{
	autocode.DrawString(str[i].ToString(), new Font(font[r.Next(0, n)], <大小>, FontStyle.<类型>), new SolidBrush(color[r.Next(0, n)]), new Point(<水平的间隔>, <竖直的间隔>));
}
  1. 绘制一些干扰,干扰线和干扰点
// 画干扰线
for (int i = 0; i < <线数量>; i++)
{
	autocode.DrawLine(new Pen(Brushes.<线的颜色>), new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height)), new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height)));
}

// 画干扰点
for (int i = 0; i < <点数量>; i++)
{
	bmp.SetPixel(r.Next(0, bmp.Width), r.Next(0, bmp.Height), <点的颜色>);
}
  1. 在form加载时就可以调用绘制一个验证码,如果点击重绘就再次调用这个函数就好了。判断输入正确没有就比较简单了,对比一下数字时候相同就好了
if (str == <输入框>.Text.ToString())
{
	MessageBox.Show("验证通过");
}
else
{
	<输入框>.Clear();
	MessageBox.Show("验证码错误,请重新输入");
}
发布了39 篇原创文章 · 获赞 48 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_39798423/article/details/86772803