在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;
}
}
}