구체적인 구현 방법은 다음과 같습니다.
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(',');//拆分成数组 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 중국어 웹사이트를 주목하세요!