Código de verificación de ASP.net (C#)
Autor:Eve Cole
Fecha de actualización:2009-07-01 15:48:32
clase pública ValidateCode: System.Web.UI.Page
{
Page_Load vacío privado (remitente del objeto, System.EventArgs e)
{
this.CreateCheckCodeImage(GenerateCheckCode());
}
#región código generado por el diseñador de formularios web
anular el vacío protegido OnInit (EventArgs e)
{
//
// CODEGEN: Esta llamada es requerida por el diseñador de formularios web asp.NET.
//
InicializarComponente();
base.OnInit(e);
}
/// <resumen>
/// Designer admite los métodos requeridos; no use el editor de código para modificar
/// El contenido de este método.
/// </summary>
vacío privado InicializarComponente()
{
this.Load += nuevo System.EventHandler(this.Page_Load);
}
#regiónfinal
cadena privada GenerateCheckCode()
{
número entero;
código de caracteres;
código de verificación de cadena = Cadena.Empty;
System.Random aleatorio = nuevo Aleatorio();
para(int i=0; i<5; i++)
{
número = aleatorio.Siguiente();
si(número % 2 == 0)
código = (char)('0' + (char)(número % 10));
demás
código = (char)('A' + (char)(número % 26));
checkCode += código.ToString();
}
Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));
devolver código de verificación;
}
vacío privado CreateCheckCodeImage (cadena código de verificación)
{
if(checkCode == null || checkCode.Trim() == String.Empty)
devolver;
Imagen System.Drawing.Bitmap = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Gráficos g = Graphics.FromImage(imagen);
intentar
{
//generar generador aleatorio
Aleatorio aleatorio = nuevo Aleatorio();
//Borrar el color de fondo de la imagen
g.Claro(Color.Blanco);
//Dibuja la línea de ruido de fondo de la imagen.
para(int i=0; i<25; i++)
{
int x1 = aleatorio.Siguiente(imagen.Ancho);
int x2 = aleatorio.Siguiente(imagen.Ancho);
int y1 = aleatorio.Siguiente(imagen.Altura);
int y2 = aleatorio.Siguiente(imagen.Altura);
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}
Fuente fuente = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
Pincel System.Drawing.Drawing2D.LinearGradientBrush = nuevo System.Drawing.Drawing2D.LinearGradientBrush (nuevo Rectángulo (0, 0, imagen.Ancho, imagen.Alto), Color.Azul, Color.DarkRed, 1.2f, verdadero);
g.DrawString(checkCode, fuente, pincel, 2, 2);
//Dibuja los puntos de ruido de primer plano de la imagen.
para(int i=0; i<100; i++)
{
int x = aleatorio.Siguiente(imagen.Ancho);
int y = aleatorio.Siguiente(imagen.Altura);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//Dibuja la línea del borde de la imagen.
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
System.IO.MemoryStream ms = nuevo System.IO.MemoryStream();
imagen.Guardar(ms, System.Drawing.Imaging.ImageFormat.Gif);
Respuesta.ClearContent();
Response.ContentType = "imagen/Gif";
Respuesta.BinaryWrite(ms.ToArray());
}
finalmente
{
g.Dispose();
imagen.Dispose();
}
}
}
http://www.cnblogs.com/niit007/archive/2006/08/13/475506.html