如何制作验证码?
就是那种字母数字印在图片上的那种?
------解决方案-------------------- private string GetCode(int num)
{
string[] source ={ "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "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 code = "";
Random rd = new Random();
for (int i = 0; i < num; i++)
{
code += source[rd.Next(0, source.Length)];
}
return code;
}
private MemoryStream GetVImageStream()
{
MemoryStream ImageMemoryStream = new MemoryStream();
string VCodeString = GetCode(4);
Session["HCValidateCode"] = 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(0, 255));
//产生干扰线
for (int i = 1; i <= 6; i++)
{
int TmpPosition = i * 4;
Color LineColor = BackGroundColor(0, 255);
LinePen.Color = LineColor;
TGrphics.DrawLine(LinePen, 0, TmpPosition, VCodeString.Length * 19, 0);
LineColor = BackGroundColor(0, 255);
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;
}
#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
Response.ClearContent();