深入c#绘制验证码的详解
深入c#绘制验证码的详解
发布时间:2016-12-28 来源:查字典编辑
摘要:1.使用一个PictureBox空间,使用一个按钮,以刷新验证码。2.首先定义CheckCode()方法,以生成4为英文及数字组成的字符串序...

1.使用一个PictureBox空间,使用一个按钮,以刷新验证码。

2.首先定义CheckCode()方法,以生成4为英文及数字组成的字符串序列:

复制代码 代码如下:

private string CheckCode()

{

int number;

char code;

string checkCode = String.Empty;

Random random = new Random();

for (int i = 0; i < 4; i++)

{

number=random.Next();

if(number%2==0)

code=(char)('0'+(char)(number%10));

else

code=(char)('A'+(char)(number%26));

checkCode += " " + code.ToString();

}

return checkCode;

}

3.自定义CodeImage()方法,将CheckCode()方法生成的序列转化为图片并显示:

复制代码 代码如下:

private void CodeImage(string checkCode)

{

if (checkCode == null || checkCode.Trim() == String.Empty)

{

return;

}

System.Drawing.Bitmap image=new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length*50.0)),50);

Graphics g=Graphics.FromImage(image);

try

{

Random random = new Random();

g.Clear(Color.White);

for (int i = 0; i < 3; i++)

{

int x1 = random.Next(image.Width);

int x2 = random.Next(image.Width);

int y1 = random.Next(image.Height);

int y2 = random.Next(image.Height);

g.DrawLine(new Pen(Color.Black), x1, y1, x2, y2);

}

Font font = new System.Drawing.Font("Arial", 30, (System.Drawing.FontStyle.Bold));

g.DrawString(checkCode, font, new SolidBrush(Color.Red), 2, 2);

for (int i = 0; i < 200; i++)

{

int x = random.Next(image.Width);

int y = random.Next(image.Height);

image.SetPixel(x, y, Color.FromArgb(random.Next()));

}

g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);

this.pictureBox1.Width = image.Width;

this.pictureBox1.Height = image.Height;

this.pictureBox1.BackgroundImage = image;

}

catch

{

}

}

4.

复制代码 代码如下:

private void Form1_Load(object sender, EventArgs e)

{

CodeImage(CheckCode());

}

private void button1_Click(object sender, EventArgs e)

{

CodeImage(CheckCode());

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类