#region 生成验证码图像
private MemoryStream GetImages(int ImageWidth, int FontSize, int CharNumber, string BackgroundColor)
{
int ImageHeight = 5;
Bitmap TempBitmap;
Graphics TempGraphics;
Color ColorBack = ColorTranslator.FromHtml(BackgroundColor);
TempBitmap = new Bitmap(ImageWidth, 4 * ImageHeight, PixelFormat.Format24bppRgb);
TempGraphics = Graphics.FromImage(TempBitmap);
TempGraphics.FillRectangle(new SolidBrush(ColorBack), new Rectangle(0, 0, ImageWidth, 5 * ImageHeight));
string ImageNumber = null, ShowCode = null;
Color ColorFont;
int ShowCodeFontSize;
Font ShowCodeFont;
Rnd = new Random();
for (int i = 0; i < CharNumber; i++)
{
ShowCode = GetChar();
ImageNumber += ShowCode;
ShowCodeFontSize = Convert.ToInt32(3 * Rnd.NextDouble() + (FontSize - 2));
ColorFont = ColorTranslator.FromHtml(GetColor());
ShowCodeFont = new Font("Verdana", ShowCodeFontSize, FontStyle.Bold);
TempGraphics.DrawString(ShowCode, ShowCodeFont, new SolidBrush(ColorFont), Convert.ToInt32(FontSize / 2) + i * FontSize, Convert.ToInt32(ImageHeight * 0.125 * Rnd.NextDouble() + ImageHeight * 0.08));
}
StrCode = ImageNumber.Trim();
FontSize = FontSize * 4;
ImageHeight = Convert.ToInt32(2.5 * FontSize);
MemoryStream TempStream = new MemoryStream();
TempBitmap.Save(TempStream, ImageFormat.Gif);
TempGraphics.Dispose();
TempBitmap.Dispose();
TempStream.Close();
return TempStream;
}
private void ShowImage(MemoryStream ShowStream)
{
Response.ClearContent();
Response.ContentType = "image/gif";
Response.BinaryWrite(ShowStream.ToArray());
}
private string GetChar()
{
char[] CharArray = new char[2];
CharArray[0] = (char)(48 + Rnd.Next(0, 10));
CharArray[1] = (char)(65 + Rnd.Next(0, 6));
return CharArray[Rnd.Next(0, 2)].ToString();
}
private string GetColor()
{
int ColorR, ColorG, ColorB;
ColorR = 20 + Rnd.Next(0, 180);
ColorG = 20 + Rnd.Next(0, 180);
ColorB = 20 + Rnd.Next(0, 180);
if (ColorR > 150 && ColorR > 150 && ColorR > 150)
{
ColorR = 20 + Rnd.Next(0, 150);
}
return "#" + Convert.ToString(ColorR, 16) + Convert.ToString(ColorG, 16) + Convert.ToString(ColorB, 16);
}
#endregion