效果图
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 验证码
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Random rd = new Random();
string code;
private void Form1_Load(object sender, EventArgs e)
{
SetCode(4);
}
private void SetCode(int length)
{
code = "";
for (int i = 0; i < length; i++)
{
int type = rd.Next(0, 2);
if (type == 0)
{
code += rd.Next(0, 10);
}
else if (type == 1)
{
code += (char)rd.Next(97, 123);
}
}
if (string.IsNullOrWhiteSpace(code))
{
return;
}
Bitmap img = new Bitmap(code.Length * 15 + 10, 25);
Graphics graphics = Graphics.FromImage(img);
graphics.Clear(Color.White);//背景颜色为白色
Pen pen = new Pen(Color.Black, 1);
graphics.DrawRectangle(pen, 0, 0, img.Width - 1, img.Height - 1);//黑边框
for (int i = 0; i < code.Length; i++)
{
Pen p = new Pen(Color.FromArgb(rd.Next(255), rd.Next(255), rd.Next(255)), rd.Next(2, 4));//画线
graphics.DrawLine(p, rd.Next(0, img.Width), rd.Next(0, img.Height), rd.Next(0, img.Width), rd.Next(0, img.Height));//线段位置
}
graphics.DrawString(code, new Font("楷体", 15, FontStyle.Bold | FontStyle.Italic), new SolidBrush(Color.FromArgb(rd.Next(255), rd.Next(255), rd.Next(255))), new Point(6, 6));
for (int i = 0; i < code.Length * 20; i++)
{
graphics.FillEllipse(new SolidBrush(Color.FromArgb(rd.Next(255), rd.Next(255), rd.Next(255))), rd.Next(0, img.Width), rd.Next(0, img.Height), 2, 2);//绘制圆点
}
pictureBox1.Image = img;
}
private void button1_Click(object sender, EventArgs e)
{
if (code.ToUpper().Equals(textBox1.Text.ToUpper()))
{
MessageBox.Show("正确");
}
else
{
MessageBox.Show("输入有误!");
SetCode(4);
}
}
private void pictureBox1_Click(object sender, EventArgs e)
{
SetCode(4);
}
}
}