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

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

作者: 联联小子 | 来源:发表于2019-04-28 15:42 被阅读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(); 

          } 

      } 

    相关文章

      网友评论

          本文标题:C#生成验证码及在页面上无刷新更换的源码

          本文链接:https://www.haomeiwen.com/subject/sptjnqtx.html