验证码绘制
结果图
点击绘制验证码区域就可以自动切换验证码
涉及到的技术
1、GDI+绘图:Graphics
设计流程
**1、先生成随机数字
2、给出位图
3、画斜线
4、画点
5、将位图给图片控件**
代码展示
///实现画验证码
public void drawrandomnum()
{
/*
1、先生成随机数字
2、给出位图
3、画斜线
4、画点
5、将位图给图片控件
*/
Random r=new Random();
string str = null;
//位图大小
Bitmap bmp = new Bitmap(200, 60);
Graphics g = Graphics.FromImage(bmp);
string[] fonts = { "微软雅黑", "楷体", "宋体", "草书", "行书" };
Color[] pencolor = { Color.Brown, Color.Red, Color.RosyBrown, Color.Black, Color.AliceBlue };
Point pp=new Point();
Pen p = new Pen();
for (int i = 0; i < 5; i++)
{
//这里主要是用于控制每个数字的位置
pp = new Point(i*20,20);
str += r.Next(0,9);
//写字
g.DrawString(str[i].ToString().Substring(0, 1), new Font(fonts[r.Next(0, 5)], 20, FontStyle.Bold), new SolidBrush(pencolor[r.Next(0, pencolor.Length - 1)]), pp);
}
//画线
for (int j = 0; j < 40; j++)
{
//控制这个线是在位图区域内
Point p1 = new Point(r.Next(bmp.Width), r.Next(bmp.Height));
Point p2 = new Point(r.Next(bmp.Width), r.Next(bmp.Height));
g.DrawLine(new Pen(pencolor[r.Next(0, pencolor.Length - 1)]), p1,p2);
}
//画点
for (int k = 0; k < 30; k++)
{
Point p3 = new Point(r.Next(bmp.Width), r.Next(bmp.Height));
bmp.SetPixel(p3.X, p3.Y, Color.Black);
}
pictureBox2.Image = bmp;
}