C#生成验证码及在页面上无刷新更换的源码

2019-04-28  本文已影响0人  联联小子

把代码过程中重要的一些代码片段备份一下,下面资料是关于C#生成验证码及在页面上无刷新更换的的代码。

<script language="javascript" type="text/javascript"> 

function fresh() 

var randomnum=Math.random(); 

var getimagecode=document.getElementById( "codeimage"); 

getimagecode.src= "ValidateImage.aspx? "+randomnum; 

</script> 

页面内要放验证码的地方(层内,单元格内等)放置如下代码,这个是验证码的图图,输入验证码的文本框和调刷新方法的链接。

<div><img id="codeimage" src="ValidateImage.aspx?,Math.random()" /> 

<asp:TextBox ID="txtValidateCode" runat="server" Width="55px" MaxLength="4"></asp:TextBox> 

<a href="javascript:fresh()" style="font-size: 12px; color: Green">看不清</a></div> 

Validateimage.aspx页面是生成图片

private void Page_Load(object sender, System.EventArgs e) 

  { 

      this.CreateCheckCodeImage(RndNum()); 

  } 

  private string RndNum() 

  { 

      int number; 

      char code; 

      string checkCode = String.Empty; 

      System.Random random = new Random(); 

      for (int i = 0; i < 4; i++) 

      { 

          number = random.Next(); 

          if (number % 2 == 0) 

              code = (char)('0' + (char)(number % 10)); 

          else 

              code = (char)('A' + (char)(number % 26)); 

          checkCode += code.ToString(); 

      } 

      Response.Cookies.Add(new HttpCookie("yzmcode", checkCode)); 

      return checkCode; 

  } 

  private void CreateCheckCodeImage(string checkCode) 

  { 

      if (checkCode == null || checkCode.Trim() == String.Empty) 

          return; 

      Graphics g = Graphics.FromImage(image); 

      try 

      { 

          Random random = new Random(); 

          g.Clear(Color.White); 

          for (int i = 0; i < 20; i++) 

          { 

              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.Aqua), x1, y1, x2, y2); 

          } 

          Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)); 

          System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.BlueViolet, Color.BlueViolet, 1.2f, true); 

          g.DrawString(checkCode, font, brush, 2, 2); 

          for (int i = 0; i < 50; 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), 0, 0, image.Width - 1, image.Height - 1); 

          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(); 

      } 

  } 

上一篇下一篇

猜你喜欢

热点阅读