> 백엔드 개발 > C#.Net 튜토리얼 > asp.net은 문자와 숫자가 혼합된 그래픽 확인 코드를 생성합니다.

asp.net은 문자와 숫자가 혼합된 그래픽 확인 코드를 생성합니다.

高洛峰
풀어 주다: 2017-01-09 09:34:24
원래의
1079명이 탐색했습니다.

구체적인 구현 방법은 다음과 같습니다.

1. 주요 아이디어는 Using System. Drawing 네임스페이스를 참조하고, Graphics의 FromImage 메서드를 사용하여 캔버스를 만들고, 너비와 높이를 설정하는 것입니다. 그런 다음 Graphics 클래스의 DrawString 메서드를 사용하여 문자열을 무작위로 생성하여 캔버스에 그립니다. 확인 코드를 그리는 동안 불법적인 사람이 로봇을 사용하여 로그하는 것을 방지하기 위해 SetPixel 메서드를 사용하여 캔버스에 몇 가지 색상 포인트를 그립니다. 안에. 인증 코드를 그린 후 인증 코드가 필요한 페이지에 이를 표시하기 위해 이미지 공간을 사용합니다. 인증 코드를 표시하는 이미지 컨트롤의 HTML 소스 코드는 다음과 같이 설정됩니다.

<asp:Image ID="Image1" runat="server"ImageUrl="~/ValidateNum.aspx" />
<asp:LinkButton ID="LinkButton1" runat="server" style="font-size: small; ">看不清,换一张</asp:LinkButton>
로그인 후 복사

2. 여기에 사용된 ValidateNum.aspx 페이지 코드는 다음과 같습니다.

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Drawing;
 
public partial class ValidateNum : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
      string validateNum = CreateRandomNum(4);//成生4位随机字符串
      CreateImage(validateNum);//将生成的随机字符串绘成图片
      Session["ValidateNum"] = validateNum;//保存验证码
    }
  }
  //生成随机字符串
  private string CreateRandomNum(int NumCount)
  {
    string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";
    string[] allCharArray = allChar.Split(&#39;,&#39;);//拆分成数组
    string randomNum = "";
    int temp = -1;//记录上次随机数的数值,尽量避免产生几个相同的随机数
 
    Random rand = new Random();
    for (int i = 0; i < NumCount; i++)
    {
      if (temp != -1)
      {
        rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
      }
      int t = rand.Next(35);
      if (temp == t)
      {
        return CreateRandomNum(NumCount);
      }
      temp = t;
      randomNum += allCharArray[t];
    }
    return randomNum;
  }
  //生成图片
  private void CreateImage(string validateNum)
  {
    if (validateNum == null || validateNum.Trim() == String.Empty)
      return;
    //生成Bitmap图像
    System.Drawing.Bitmap image = new System.Drawing.Bitmap(validateNum.Length * 12 + 10, 22);
    Graphics g = Graphics.FromImage(image);
 
    try
    {
      //生成随机生成器
      Random random = new Random();
 
      //清空图片背景色
      g.Clear(Color.White);
 
      //画图片的背景噪音线
      for (int i = 0; i < 25; 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.Silver), 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.Blue, Color.DarkRed, 1.2f, true);
      g.DrawString(validateNum, font, brush, 2, 2);
 
      //画图片的前景噪音点
      for (int i = 0; i < 100; 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();
    }
  }
}
로그인 후 복사

위 asp.net에서 그래픽 확인 코드를 생성하는 방법에 관한 내용입니다. 관련 정보로, 모든 분들의 학습에 도움이 되기를 바랍니다.

asp.net에서 문자와 숫자가 혼합된 그래픽 인증 코드를 생성하는 것과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿