using System;
using System.Configuration;
using System.IO;
using System.Collections;
using System.ComponentModel;using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
public partial class GetValidateCode : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
Response.ClearContent();
Response.ContentType = "images/Png";
Response.BinaryWrite(GetVImageStream().ToArray());
}
#region 产生图片内存流
/// <summary>
/// 产生图片内存流
/// </summary>
/// <returns>图片内存流</returns>
private MemoryStream GetVImageStream()
{
MemoryStream ImageMemoryStream = new MemoryStream();
string VCodeString = GetVCode(4);
ConfigurationManager.AppSettings["code"] = VCodeString;
Font VCodeFont = new Font("Arial", 14, FontStyle.Bold);
SolidBrush VCodeBrush = new SolidBrush(Color.SandyBrown);
Pen LinePen = new Pen(Color.Ivory, 1);
Bitmap Tmap = new Bitmap(VCodeString.Length * 19, 24);
Graphics TGrphics;
TGrphics = Graphics.FromImage(Tmap);
TGrphics.Clear(BackGroundColor(200, 50));
//产生干扰线
for (int i = 1; i <= 6; i++)
{
int TmpPosition = i * 4;
Color LineColor = BackGroundColor(100, 155);
LinePen.Color = LineColor;
TGrphics.DrawLine(LinePen, 0, TmpPosition, VCodeString.Length * 19, 0);
LineColor = BackGroundColor(100, 155);
LinePen.Color = LineColor;
TGrphics.DrawLine(LinePen, 0, 24, VCodeString.Length * 19, TmpPosition);
}
//产生干扰线
TGrphics.DrawString(VCodeString, VCodeFont, VCodeBrush, VCodeString.Length, 1);
Tmap.Save(ImageMemoryStream, System.Drawing.Imaging.ImageFormat.Png);
Tmap.Dispose();
TGrphics.Dispose();
return ImageMemoryStream;
}
#endregion
#region 随机返回背景色
/// <summary>
/// 随机返回颜色
/// </summary>
/// <param name="BeginRandomNumber">指定颜色开始的最小值</param>
/// <param name="RandomNumber">指定颜色值波动的范围</param>
/// <returns>随机的Color</returns>
private Color BackGroundColor(int BeginRandomNumber, int RandomNumber)
{
int ColorR = 0;
int ColorG = 0;
int ColorB = 0;
Random TRandom = new Random();
ColorR = BeginRandomNumber + TRandom.Next(RandomNumber);
ColorG = BeginRandomNumber + TRandom.Next(RandomNumber);
ColorB = BeginRandomNumber + TRandom.Next(RandomNumber);
Color ColorBG = Color.FromArgb(ColorR, ColorG, ColorB);
return ColorBG;
}
#endregion
#region 随机产生字符串
/// <summary>
/// 随机产生字符串
/// </summary>
/// <param name="VCodeLength">要产生的随机字符串长度</param>
/// <returns></returns>
public string GetVCode(int VCodeLength)
{
if (VCodeLength <= 0)
{
return "";
}
string VCodeString = "0,1,2,3,4,5,6,7,8,9,a,b,c,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
string[] VCodeStringArray = VCodeString.Split(',');
string ReturnValue = "";
int RandomNumber = 0;
Random TRandom = new Random();
for (int i = 1; i <= VCodeLength; i++)
{
RandomNumber = TRandom.Next(VCodeStringArray.Length);
ReturnValue += VCodeStringArray[RandomNumber];
}
return ReturnValue;
}
#endregion
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。