C#简易生成校验码(数字+大小写字母)

注释写的很详细,不做过多的描述了,希望能给初学者带来一些帮助,同时也是自己知识的一个积累过程。

如果有哪里看不懂的,请留言哦

 

生成随机码类:SigowayRandom.cs

  1. using System;
  2. namespace RongYi.Model.Common
  3. {
  4.     /// <summary>
  5.     /// SigowayRandom 的摘要说明
  6.     /// </summary>
  7.     public class SigowayRandom
  8.     {
  9.         #region 获取校验码
  10.         /// <summary>
  11.         /// 获取校验码
  12.         /// </summary>
  13.         /// <returns>校验码字符数组</returns>
  14.         public static string[] GetCheckCode()
  15.         {
  16.             string[] strCheckCode = new string[4];
  17.             // 已系统时间毫秒为随机种子
  18.             int nSeed = Convert.ToInt16(DateTime.Now.Millisecond);
  19.             Random random = new Random(nSeed);
  20.             // 产生0-9随机数
  21.             strCheckCode[0] = Convert.ToString(random.Next(1, 10));
  22.             // 产生a-z、A-Z随机字母
  23.             strCheckCode[1] = SigowayRandom.GetLetter(random);
  24.             strCheckCode[2] = Convert.ToString(random.Next(1, 10));
  25.             strCheckCode[3] = SigowayRandom.GetLetter(random);
  26.             // 返回校验码
  27.             return strCheckCode;
  28.         }
  29.         #endregion
  30.         #region 获取字母,区分大小写
  31.         /// <summary>
  32.         /// 获取字母,区分大小写
  33.         /// </summary>
  34.         /// <returns>大小写字母</returns>
  35.         private static string GetLetter(Random random)
  36.         {
  37.             // 随机数
  38.             int nChar = random.Next(65, 122);
  39.             // 非字母ASCII段
  40.             if (nChar >= 91 && nChar <= 96)
  41.             {
  42.                 nChar -= 6;
  43.             }
  44.             return Convert.ToString((char)nChar);
  45.         }
  46.         #endregion
  47.     }
  48. }

2.绘制校验码类:SigowayDraw.cs

  1. using System.Drawing;
  2. using System.Drawing.Imaging;
  3. using System.Web;
  4. namespace RongYi.Model.Common
  5. {
  6.     /// <summary>
  7.     /// SigowayDraw 的摘要说明
  8.     /// </summary>
  9.     public class SigowayDraw
  10.     {
  11.         #region 构造方法
  12.         /// <summary>
  13.         /// 构造方法
  14.         /// </summary>
  15.         public SigowayDraw() { }
  16.         #endregion
  17.         #region 画校验码
  18.         /// <summary>
  19.         /// 画校验码
  20.         /// </summary>
  21.         /// <returns>校验码</returns>
  22.         public string DrawString()
  23.         {
  24.             // 设置字体
  25.             Font drawFont = new Font("Arial", 10);
  26.             // 创建位图元素
  27.             Bitmap objBitmap = new Bitmap(50, 20);
  28.             // 创建画图对象
  29.             Graphics objGraphics = Graphics.FromImage(objBitmap);
  30.             // 设置画布背景色
  31.             objGraphics.Clear(Color.White);
  32.             // 获取随机字符串
  33.             string[] strDrawString = SigowayRandom.GetCheckCode();
  34.             // 画字符串
  35.             objGraphics.DrawString(strDrawString[0], drawFont, new SolidBrush(Color.Purple), 1, 2);
  36.             objGraphics.DrawString(strDrawString[1], drawFont, new SolidBrush(Color.Green), 12, 2);
  37.             objGraphics.DrawString(strDrawString[2], drawFont, new SolidBrush(Color.Red), 24, 2);
  38.             objGraphics.DrawString(strDrawString[3], drawFont, new SolidBrush(Color.SteelBlue), 35, 2);
  39.             // 画干扰线
  40.             objGraphics.DrawLine(Pens.Silver, 5, 10, 40, 3);
  41.             objGraphics.DrawLine(Pens.Gray, 10, 5, 45, 15);
  42.             objGraphics.DrawLine(Pens.HotPink, 15, 20, 30, 10);
  43.             objGraphics.DrawLine(Pens.LightPink, 10, 15, 35, 20);
  44.             // 把图像画到位图对象中
  45.             objGraphics.DrawImage(objBitmap, 0, 0);
  46.             // 设置保存图片路径及名字
  47.             string strFile = HttpRuntime.AppDomainAppPath.ToString() + "/Resource/img/CheckCode.gif";
  48.             // 输出文件
  49.             objBitmap.Save(strFile, ImageFormat.Gif);
  50.             // 连接校验码字符串
  51.             string strCheckCode = string.Empty;
  52.             foreach (string strTemp in strDrawString)
  53.             {
  54.                 strCheckCode += strTemp;
  55.             }
  56.             // 返回校验码
  57.             return strCheckCode;
  58.         }
  59.         #endregion
  60.     }
  61. }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值