private void CreateCheckCode()
{
string checkCode = GetRandWord(5)
Response.Cookies.Add(new HttpCookie("CheckCode", checkCode))
CreateCheckImage(checkCode)
}
/// <summary>
/// 生成验证码图片
/// </summary>
/// <param name="checkCode"></param>
private void CreateCheckImage(string checkCode)
{
if ((checkCode != null) &&!(checkCode.Trim() == string.Empty))
{
Bitmap image = new Bitmap((int)Math.Ceiling((double)(checkCode.Length * 12.5)), 0x14)
Graphics g = Graphics.FromImage(image)
try
{
int i
Random random = new Random()
g.Clear(Color.White)
for (i = 0i <0x19i++)
{
int x1 = random.Next(image.Width)
int x2 = random.Next(image.Width)
int y1 = random.Next(image.Height)
int y2 = random.Next(image.Height)
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2)
}
Font font = new Font("Arial", 12f, FontStyle.Italic | FontStyle.Bold)
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true)
g.DrawString(checkCode, font, brush, (float)2f, (float)2f)
for (i = 0i <100i++)
{
int x = random.Next(image.Width)
int y = random.Next(image.Height)
image.SetPixel(x, y, Color.FromArgb(random.Next()))
}
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1)
MemoryStream ms = new MemoryStream()
image.Save(ms, ImageFormat.Gif)
HttpContext.Current.Response.ClearContent()
HttpContext.Current.Response.ContentType = "image/Gif"
HttpContext.Current.Response.BinaryWrite(ms.ToArray())
}
finally
{
g.Dispose()
image.Dispose()
}
}
}
/// <summary>
/// 随机数
/// </summary>
/// <param name="length">长度</param>
/// <returns></returns>
private static string GetRandWord(int length)
{
string checkCode = string.Empty
Random random = new Random()
for (int i = 0i <lengthi++)
{
char code
int number = random.Next()
if ((number % 2) == 0)
{
code = (char)(0x30 + ((ushort)(number % 10)))
}
else
{
code = (char)(0x41 + ((ushort)(number % 0x1a)))
}
checkCode = checkCode + code.ToString()
}
return checkCode
}
添加一个web窗体 然后将下面的代码添加进去 并重命名该窗体为checkCode aspx public class ValidateCode : System Web UI Page { private void Page_Load(object sender System EventArgs e) { this CreateCheckCodeImage(GenerateCheckCode()) } #region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP NET Web 窗体设计器所必需的 // InitializeComponent() base OnInit(e) } /// <summary> /// 设计器支持所需的方法 不要使用代码编辑器修改 /// 此方法的内容 /// </summary> private void InitializeComponent() { this Load += new System EventHandler(this Page_Load) } #endregion private string GenerateCheckCode() { int number char code string checkCode = String Empty System Random random = new Random() for(int i= i<i++) { number = random Next() if(number % == ) code = (char)( + (char)(number % )) else code = (char)( A + (char)(number % )) checkCode += code ToString() } Response Cookies Add(new HttpCookie( CheckCode checkCode)) return checkCode } private void CreateCheckCodeImage(string checkCode) { if(checkCode == null || checkCode Trim() == String Empty) return System Drawing Bitmap image = new System Drawing Bitmap((int)Math Ceiling((checkCode Length * )) ) Graphics g = Graphics FromImage(image) try { //生成随机生成器 Random random = new Random() //清空图片背景色 g Clear(Color White) //画图片的背景噪音线 for(int i= i<i++) { int x = random Next(image Width) int x = random Next(image Width) int y = random Next(image Height) int y = random Next(image Height) g DrawLine(new Pen(Color Silver) x y x y ) }Font font = new System Drawing Font( Arial (System Drawing FontStyle Bold | System Drawing FontStyle Italic)) System Drawing Drawing D LinearGradientBrush brush = new System Drawing Drawing D LinearGradientBrush(new Rectangle( image Width image Height) Color Blue Color DarkRed f true) g DrawString(checkCode font brush ) //画图片的前景噪音点 for(int i= i<i++) { int x = random Next(image Width) int y = random Next(image Height) image SetPixel(x y Color FromArgb(random Next())) } //画图片的边框线 g DrawRectangle(new Pen(Color Silver) image Width image Height ) System IO MemoryStream ms = new System IO MemoryStream() image Save(ms System Drawing Imaging ImageFormat Gif) Response ClearContent() Response ContentType = image/Gif Response BinaryWrite(ms ToArray()) } finally { g Dispose() image Dispose() } } } 在你要显示验证码的窗体中添加一个image控件 并命名为imgCheckCode 用于显示验证码 再添加一个lable 并命名为lblMessage 用于显示错误信息 然后在该窗体的Page_Load中添加 this imgCheckCode ImageUrl = checkCode aspx 在登录页面的登录按钮的处理事件中使用以下代码判断验证码 private void btnLogin_Click(object sender System Web UI ImageClickEventArgs e) { if(Request Cookies[ checkCode ] == null) { lblMessage Text = 您的浏览器设置已被禁用 Cookies 您必须设置浏览器允许使用 Cookies 选项后才能使用本系统 lblMessage Visible = true return } if(String Compare(Request Cookies[ checkCode ] Value txtCheckCode Text true) != ) { lblMessage Text = 验证码错误 请输入正确的验证码 lblMessage Visible = true return } } 这样就能实现你所要的验证码验证了 lishixinzhi/Article/program/net/201311/13119
两套方案
第一:使用标签或者textbox(需设为只读)输出验证码
第二:让验证码生成图片,并加入随机线条
思路在上面,具体方法百度一下 ^_^
goodluck!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)