1.绘制验证码,首先绘制出上边的几个数字
//首先是生成5个随机得的数字
Random r = new Random();
string str = null;
for (int i = 0; i < 5; i++)
{
int rNumber = r.Next(0,10);
str += rNumber;
}
2.使用GDI来生成一个位图,然后将生成出来的字符串绘制到位图上
//第二步 使用GDI来绘制图片
Bitmap bmp = new Bitmap(200, 40);
Graphics g =Graphics.FromImage(bmp);
for (int i = 0; i < 5; i++)
{
Point p = new Point(i*30,0);
string[] fonts = { "微软雅黑", "宋体","黑体","隶书","仿宋" };//设置验证码的字体
Color[] colors = { Color.Yellow, Color.Blue ,Color.Black,Color.Red,Color.Green};
g.DrawString(str[i].ToString(),new Font(fonts[r.Next(0,5)],25,FontStyle.Bold),new SolidBrush(colors[r.Next(0,5)]),p);//使用SolidBrush来生成画笔对象
}
3.绘制出验证码上面的线
//绘制验证码上面的线
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(Color.Green),p1,p2);
}
4.绘制出验证码上的点
for (int i = 0; i < 500; i++)
{
Point p = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
bmp.SetPixel(p.X, p.Y, Color.Black);
}
最后再把生成的位图绑定到PIctureBoxl里面就可以啦!!!
pictureBox1.Image = bmp;
效果图:
总结:使用Random来生成随机数,使用Bitmap来创建位图 ,使用Graphics来创建GDI对象,因为bmg继承至Image,所以在创建GDI对象的时候可以传入Bitmap类型的对象
使用DrawString方法来绘制字符串,因为字体和字体格式都需要随机,所以需要先创建一个字体数组(string类型)和一个颜色数组(Color类型),使用SolidBrush类来生成画笔,因为验证码上面的每一个数字的位置不能重叠到一起,所以需要设置他们的横坐标不能相同。
使用DrawLine来绘制线,使用bmp.SetPixel来绘制点
--------本文章是学习传播智客视频后写博客来记录知识,如果侵权,请联系删除!