using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Text;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CAPTCHA
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 实现点一下就换一张验证码
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void pbCaptcha_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(120, 40);
Graphics g = Graphics.FromImage(bmp);
Random r = new Random();
string str = "";
for (int i = 0; i < 5; i++)
{
int rNum= r.Next(0, 10);
str += rNum;
}
string[] fonts ={"华文行楷","微软雅黑","楷体","仿宋","宋体"};
Color[] colors = { Color.Red,Color.RosyBrown,Color.DarkOrange,Color.SteelBlue,Color.DarkTurquoise};
//随机字体
InstalledFontCollection fc = new InstalledFontCollection();
FontFamily[] fs = fc.Families;
for (int i = 0; i < 5; i++)
{
Point p = new Point(i * 20, 0);
g.DrawString(str[i].ToString(), new Font(fs[r.Next(0,fs.Length)],20,FontStyle.Bold), new SolidBrush(colors[i]), p);
}
//画50条线
for (int i = 0; i < 40; 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.LightGray),p1, p2);
}
//画50个点
for (int i = 0; i < 50; i++)
{
Point p = new Point(r.Next(0, bmp.Height), r.Next(0, bmp.Width));
bmp.SetPixel( p.Y,p.X, Color.Gray);
}
pbCaptcha.Image = bmp;
}
}
}
效果: