在C#中是用GDI+实现绘制验证码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace GDITest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
DrawIdentifyingCode();
}
/// 绘制验证码
/// </summary>
private void DrawIdentifyingCode()
{
Random r = new Random();
string str = null;
//产生5个随机的数字作为待绘制的验证码
for (int i = 0; i < 5; i++)
{
str += i.ToString();
}
Bitmap bmp = new Bitmap(100, 35);
Graphics g = Graphics.FromImage(bmp);
string[] fonts = { "宋体", "微软雅黑", "楷体", "隶书", "仿宋" };//设置字体
Color[] colors = { Color.Yellow, Color.Green, Color.Red, Color.Lime, Color.Black };//设置字体颜色
//循环循环绘制每个验证码,使其颜色和字体都随机产生
for (int i = 0; i < 5; i++)
{
Point p = new Point(i * 20, 0);
g.DrawString(str[r.Next(0, 5)].ToString(), new Font(fonts[r.Next(0, 5)], 24, FontStyle.Bold), new SolidBrush(colors[r.Next(0, 5)]), p);
}
//绘制模糊线条,模糊验证码
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(Brushes.Black), p1, p2);
}
//绘制像素点,模糊验证码
for (int i = 0; i < 500; i++)
{
Point p1 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
bmp.SetPixel(p1.X, p1.Y, Color.Black);
}
pictureBox1.Image = bmp;
}
}
}