注释写的很详细,不做过多的描述了,希望能给初学者带来一些帮助,同时也是自己知识的一个积累过程。
如果有哪里看不懂的,请留言哦
生成随机码类:SigowayRandom.cs 复制代码 代码如下: 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 } }
|