asp.net 简易生成注册码(数字+大小写字母) |
本文标签:asp.net,注册码 如果有哪里看不懂的,请留言哦 复制代码 代码如下: using System; namespace RongYi.Model.Common { /// <summary> /// SigowayRandom 的摘要说明 /// </summary> public class SigowayRandom { #region 获取校验码 /// <summary> /// 获取校验码 /// </summary> /// <returns>校验码字符数组</returns> public static string[] GetCheckCode() { string[] strCheckCode = new string[4]; // 已系统时间毫秒为随机种子 int nSeed = Convert.ToInt16(DateTime.Now.Millisecond); Random random = new Random(nSeed); // 产生0-9随机数 strCheckCode[0] = Convert.ToString(random.Next(1, 10)); // 产生a-z、A-Z随机字母 strCheckCode[1] = SigowayRandom.GetLetter(random); strCheckCode[2] = Convert.ToString(random.Next(1, 10)); strCheckCode[3] = SigowayRandom.GetLetter(random); // 返回校验码 return strCheckCode; } #endregion #region 获取字母,区分大小写 /// <summary> /// 获取字母,区分大小写 /// </summary> /// <returns>大小写字母</returns> private static string GetLetter(Random random) { // 随机数 int nChar = random.Next(65, 122); // 非字母ASCII段 if (nChar >= 91 && nChar <= 96) { nChar -= 6; } return Convert.ToString((char)nChar); } #endregion } } 绘制校验码类:SigowayDraw.cs 复制代码 代码如下: using System.Drawing; using System.Drawing.Imaging; using System.Web; namespace RongYi.Model.Common { /// <summary> /// SigowayDraw 的摘要说明 /// </summary> public class SigowayDraw { #region 构造方法 /// <summary> /// 构造方法 /// </summary> public SigowayDraw() { } #endregion #region 画校验码 /// <summary> /// 画校验码 /// </summary> /// <returns>校验码</returns> public string DrawString() { // 设置字体 Font drawFont = new Font("Arial", 10); // 创建位图元素 Bitmap objBitmap = new Bitmap(50, 20); // 创建画图对象 Graphics objGraphics = Graphics.FromImage(objBitmap); // 设置画布背景色 objGraphics.Clear(Color.White); // 获取随机字符串 string[] strDrawString = SigowayRandom.GetCheckCode(); // 画字符串 objGraphics.DrawString(strDrawString[0], drawFont, new SolidBrush(Color.Purple), 1, 2); objGraphics.DrawString(strDrawString[1], drawFont, new SolidBrush(Color.Green), 12, 2); objGraphics.DrawString(strDrawString[2], drawFont, new SolidBrush(Color.Red), 24, 2); objGraphics.DrawString(strDrawString[3], drawFont, new SolidBrush(Color.SteelBlue), 35, 2); // 画干扰线 objGraphics.DrawLine(Pens.Silver, 5, 10, 40, 3); objGraphics.DrawLine(Pens.Gray, 10, 5, 45, 15); objGraphics.DrawLine(Pens.HotPink, 15, 20, 30, 10); objGraphics.DrawLine(Pens.LightPink, 10, 15, 35, 20); // 把图像画到位图对象中 objGraphics.DrawImage(objBitmap, 0, 0); // 设置保存图片路径及名字 string strFile = HttpRuntime.AppDomainAppPath.ToString() + "/Resource/img/CheckCode.gif"; // 输出文件 objBitmap.Save(strFile, ImageFormat.Gif); // 连接校验码字符串 string strCheckCode = string.Empty; foreach (string strTemp in strDrawString) { strCheckCode += strTemp; } // 返回校验码 return strCheckCode; } #endregion } } |