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