结合网上其他的一些资料,该cs页可以随机生成 任何位数的中文验证码,调用时只需要
<img src="该页的地址"/> 即可。
<img src="该页的地址"/> 即可。
  1![]() using System;
using System;
2![]() using System.Data;
using System.Data;
3![]() using System.Configuration;
using System.Configuration;
4![]() using System.Collections;
using System.Collections;
5![]() using System.Web;
using System.Web;
6![]() using System.Web.Security;
using System.Web.Security;
7![]() using System.Web.UI;
using System.Web.UI;
8![]() using System.Web.UI.WebControls;
using System.Web.UI.WebControls;
9![]() using System.Web.UI.WebControls.WebParts;
using System.Web.UI.WebControls.WebParts;
10![]() using System.Web.UI.HtmlControls;
using System.Web.UI.HtmlControls;
11![]() using System.Drawing;
using System.Drawing;
12![]() using System.Text;
using System.Text;
13![]() public partial class CheckCode : System.Web.UI.Page
public partial class CheckCode : System.Web.UI.Page
14![]() {
{
15![]() protected void Page_Load(object sender, EventArgs e)
    protected void Page_Load(object sender, EventArgs e)
16![]() {
    {
17![]() Encoding gb = Encoding.GetEncoding("gb2312");
        Encoding gb = Encoding.GetEncoding("gb2312");
18![]()
19![]() //调用函数产生4个随机中文汉字编码
        //调用函数产生4个随机中文汉字编码 
20![]() object[] bytes = CreateRegionCode(4);
        object[] bytes = CreateRegionCode(4);
21![]()
22![]() //根据汉字编码的字节数组解码出中文汉字
        //根据汉字编码的字节数组解码出中文汉字 
23![]() string str1 = gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[])));
        string str1 = gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[])));
24![]() string str2 = gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[])));
        string str2 = gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[])));
25![]() string str3 = gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[])));
        string str3 = gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[])));
26![]() // string str4 = gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[])));
        // string str4 = gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[])));
27![]()
28![]() //输出的控制台
        //输出的控制台 
29![]() // Console.WriteLine(str1 + str2 + str3 + str4);
        // Console.WriteLine(str1 + str2 + str3 + str4); 
30![]() // Response.Write(str1 + str2 + str3 + str4);
        // Response.Write(str1 + str2 + str3 + str4);
31![]() //  return;
        //  return;
32![]()
33![]() string srs = str1 + str2 + str3;// +str4;
        string srs = str1 + str2 + str3;// +str4;
34![]() Bitmap srBmp = srBitmap(srs);
        Bitmap srBmp = srBitmap(srs);
35![]() System.IO.MemoryStream srMS = new System.IO.MemoryStream();
        System.IO.MemoryStream srMS = new System.IO.MemoryStream();
36![]() srBmp.Save(srMS, System.Drawing.Imaging.ImageFormat.Gif);
        srBmp.Save(srMS, System.Drawing.Imaging.ImageFormat.Gif);
37![]() Response.ClearContent();
        Response.ClearContent();
38![]() Response.ContentType = "image/gif";
        Response.ContentType = "image/gif";
39![]() Response.BinaryWrite(srMS.ToArray());
        Response.BinaryWrite(srMS.ToArray());
40![]() srBmp.Dispose();
        srBmp.Dispose();
41![]() }
    }
42![]()
43![]() /// <summary>
    /// <summary>
44![]() /// 根据指定参数返回BitMap对象
    /// 根据指定参数返回BitMap对象
45![]() /// 引用如下:
    /// 引用如下:
46![]() /// using System.Drawing;
    /// using System.Drawing;
47![]() /// 调用例子如下:
    /// 调用例子如下:
48![]() ///     eg1、保存为图象文件为
    ///     eg1、保存为图象文件为
49![]() ///     Bitmap srBmp = srBitmap(srs);
    ///     Bitmap srBmp = srBitmap(srs);
50![]() ///     srBmp.Save(Directory.GetCurrentDirectory() + "\\srs.gif", System.Drawing.Imaging.ImageFormat.Gif);
    ///     srBmp.Save(Directory.GetCurrentDirectory() + "\\srs.gif", System.Drawing.Imaging.ImageFormat.Gif);
51![]() ///     srBmp.Dispose();
    ///     srBmp.Dispose();
52![]() ///     eg2。网页中调用方式如下
    ///     eg2。网页中调用方式如下
53![]() ///     Bitmap srBmp = srBitmap(srs);
    ///     Bitmap srBmp = srBitmap(srs);
54![]() ///     System.IO.MemoryStream srMS = new System.IO.MemoryStream();
    ///     System.IO.MemoryStream srMS = new System.IO.MemoryStream();
55![]() ///     srBmp.Save(srMS,System.Drawing.Imaging.ImageFormat.Gif);
    ///     srBmp.Save(srMS,System.Drawing.Imaging.ImageFormat.Gif);
56![]() ///     Response.ClearContent();
    ///     Response.ClearContent();
57![]() ///     Response.ContentType = "image/gif";
    ///     Response.ContentType = "image/gif";
58![]() ///     Response.BinaryWrite(srMS.ToArray());
    ///     Response.BinaryWrite(srMS.ToArray());
59![]() ///     srBmp.Dispose();
    ///     srBmp.Dispose();
60![]() /// </summary>
    /// </summary>
61![]() /// <param name="srs"></param>
    /// <param name="srs"></param>
62![]() /// <returns></returns>
    /// <returns></returns> 
63![]() public static Bitmap srBitmap(string srs)
    public static Bitmap srBitmap(string srs)
64![]() {
    {
65![]() //定义图片弯曲的角度
        //定义图片弯曲的角度
66![]() int srseedangle = 10;
        int srseedangle = 10;
67![]() //定义图象
        //定义图象 
68![]() Bitmap srBmp = new Bitmap(srs.Length * 25, 30);
        Bitmap srBmp = new Bitmap(srs.Length * 25, 30);
69![]() //画图
        //画图
70![]() Graphics srGraph = Graphics.FromImage(srBmp);
        Graphics srGraph = Graphics.FromImage(srBmp);
71![]() //清空图象
        //清空图象
72![]() srGraph.Clear(Color.AliceBlue);
        srGraph.Clear(Color.AliceBlue);
73![]() //给图象画边框
        //给图象画边框
74![]() srGraph.DrawRectangle(new Pen(Color.Black, 0), 0, 0, srBmp.Width - 1, srBmp.Height - 1);
        srGraph.DrawRectangle(new Pen(Color.Black, 0), 0, 0, srBmp.Width - 1, srBmp.Height - 1);
75![]() //定义随即数
        //定义随即数
76![]() Random srRandom = new Random();
        Random srRandom = new Random();
77![]() //定义画笔
        //定义画笔
78![]() Pen srPen = new Pen(Color.LightGray, 0);
        Pen srPen = new Pen(Color.LightGray, 0);
79![]() //画噪点
        //画噪点
80![]() for (int i = 0; i < 100; i++)
        for (int i = 0; i < 100; i++)
81![]() {
        {
82![]() srGraph.DrawRectangle(srPen, srRandom.Next(1, srBmp.Width - 2), srRandom.Next(1, srBmp.Height - 2), 1, 1);
            srGraph.DrawRectangle(srPen, srRandom.Next(1, srBmp.Width - 2), srRandom.Next(1, srBmp.Height - 2), 1, 1);
83![]() }
        }
84![]() //将字符串转化为字符数组
        //将字符串转化为字符数组 
85![]() char[] srchars = srs.ToCharArray();
        char[] srchars = srs.ToCharArray();
86![]() //封状文本
        //封状文本
87![]() StringFormat srFormat = new StringFormat(StringFormatFlags.NoClip);
        StringFormat srFormat = new StringFormat(StringFormatFlags.NoClip);
88![]() //设置文本垂直居中
        //设置文本垂直居中
89![]() srFormat.Alignment = StringAlignment.Center;
        srFormat.Alignment = StringAlignment.Center;
90![]() //设置文本水平居中
        //设置文本水平居中
91![]() srFormat.LineAlignment = StringAlignment.Center;
        srFormat.LineAlignment = StringAlignment.Center;
92![]() //定义字体颜色
        //定义字体颜色
93![]() Color[] srColors ={ Color.Black, Color.Red, Color.DarkBlue, Color.Blue, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };
        Color[] srColors ={ Color.Black, Color.Red, Color.DarkBlue, Color.Blue, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };
94![]() //定义字体
        //定义字体
95![]() string[] srFonts ={ "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };
        string[] srFonts ={ "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };
96![]() //循环画出每个字符
        //循环画出每个字符
97![]() for (int i = 0, j = srchars.Length; i < j; i++)
        for (int i = 0, j = srchars.Length; i < j; i++)
98![]() {
        {
99![]() //定义字体 参数分别为字体样式 字体大小 字体字形
            //定义字体 参数分别为字体样式 字体大小 字体字形
100![]() Font srFont = new Font(srFonts[srRandom.Next(5)], srRandom.Next(12, 20), FontStyle.Regular);
            Font srFont = new Font(srFonts[srRandom.Next(5)], srRandom.Next(12, 20), FontStyle.Regular);
101![]() //填充图形
            //填充图形
102![]() Brush srBrush = new SolidBrush(srColors[srRandom.Next(7)]);
            Brush srBrush = new SolidBrush(srColors[srRandom.Next(7)]);
103![]() //定义坐标
            //定义坐标
104![]() Point srPoint = new Point(16, 16);
            Point srPoint = new Point(16, 16);
105![]() //定义倾斜角度
            //定义倾斜角度
106![]() float srangle = srRandom.Next(-srseedangle, srseedangle);
            float srangle = srRandom.Next(-srseedangle, srseedangle);
107![]() //倾斜
            //倾斜
108![]() srGraph.TranslateTransform(srPoint.X, srPoint.Y);
            srGraph.TranslateTransform(srPoint.X, srPoint.Y);
109![]() srGraph.RotateTransform(srangle);
            srGraph.RotateTransform(srangle);
110![]() //填充字符
            //填充字符
111![]() srGraph.DrawString(srchars[i].ToString(), srFont, srBrush, 1, 1, srFormat);
            srGraph.DrawString(srchars[i].ToString(), srFont, srBrush, 1, 1, srFormat);
112![]() //回归正常
            //回归正常
113![]() srGraph.RotateTransform(-srangle);
            srGraph.RotateTransform(-srangle);
114![]() srGraph.TranslateTransform(2, -srPoint.Y);
            srGraph.TranslateTransform(2, -srPoint.Y);
115![]() }
        }
116![]() srGraph.Dispose();
        srGraph.Dispose();
117![]() return srBmp;
        return srBmp;
118![]() }
    }
119![]()
120![]() /**/
    /**/
121![]() /*
    /* 
122![]() 此函数在汉字编码范围内随机创建含两个元素的十六进制字节数组,每个字节数组代表一个汉字,并将
    此函数在汉字编码范围内随机创建含两个元素的十六进制字节数组,每个字节数组代表一个汉字,并将 
123![]() 四个字节数组存储在object数组中。
    四个字节数组存储在object数组中。 
124![]() 参数:strlength,代表需要产生的汉字个数
    参数:strlength,代表需要产生的汉字个数 
125![]() */
    */
126![]() public static object[] CreateRegionCode(int strlength)
    public static object[] CreateRegionCode(int strlength)
127![]() {
    {
128![]() //定义一个字符串数组储存汉字编码的组成元素
        //定义一个字符串数组储存汉字编码的组成元素 
129![]() string[] rBase = new String[16] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
        string[] rBase = new String[16] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
130![]()
131![]() Random rnd = new Random();
        Random rnd = new Random();
132![]()
133![]() //定义一个object数组用来
        //定义一个object数组用来 
134![]() object[] bytes = new object[strlength];
        object[] bytes = new object[strlength];
135![]()
136![]() /**/
        /**/
137![]() /*每循环一次产生一个含两个元素的十六进制字节数组,并将其放入bject数组中
        /*每循环一次产生一个含两个元素的十六进制字节数组,并将其放入bject数组中 
138![]() 每个汉字有四个区位码组成
         每个汉字有四个区位码组成 
139![]() 区位码第1位和区位码第2位作为字节数组第一个元素
         区位码第1位和区位码第2位作为字节数组第一个元素 
140![]() 区位码第3位和区位码第4位作为字节数组第二个元素
         区位码第3位和区位码第4位作为字节数组第二个元素 
141![]() */
        */
142![]() for (int i = 0; i < strlength; i++)
        for (int i = 0; i < strlength; i++)
143![]() {
        {
144![]() //区位码第1位
            //区位码第1位 
145![]() int r1 = rnd.Next(11, 14);
            int r1 = rnd.Next(11, 14);
146![]() string str_r1 = rBase[r1].Trim();
            string str_r1 = rBase[r1].Trim();
147![]()
148![]() //区位码第2位
            //区位码第2位 
149![]() rnd = new Random(r1 * unchecked((int)DateTime.Now.Ticks) + i);//更换随机数发生器的种子避免产生重复值
            rnd = new Random(r1 * unchecked((int)DateTime.Now.Ticks) + i);//更换随机数发生器的种子避免产生重复值 
150![]() int r2;
            int r2;
151![]() if (r1 == 13)
            if (r1 == 13)
152![]() {
            {
153![]() r2 = rnd.Next(0, 7);
                r2 = rnd.Next(0, 7);
154![]() }
            }
155![]() else
            else
156![]() {
            {
157![]() r2 = rnd.Next(0, 16);
                r2 = rnd.Next(0, 16);
158![]() }
            }
159![]() string str_r2 = rBase[r2].Trim();
            string str_r2 = rBase[r2].Trim();
160![]()
161![]() //区位码第3位
            //区位码第3位 
162![]() rnd = new Random(r2 * unchecked((int)DateTime.Now.Ticks) + i);
            rnd = new Random(r2 * unchecked((int)DateTime.Now.Ticks) + i);
163![]() int r3 = rnd.Next(10, 16);
            int r3 = rnd.Next(10, 16);
164![]() string str_r3 = rBase[r3].Trim();
            string str_r3 = rBase[r3].Trim();
165![]()
166![]() //区位码第4位
            //区位码第4位 
167![]() rnd = new Random(r3 * unchecked((int)DateTime.Now.Ticks) + i);
            rnd = new Random(r3 * unchecked((int)DateTime.Now.Ticks) + i);
168![]() int r4;
            int r4;
169![]() if (r3 == 10)
            if (r3 == 10)
170![]() {
            {
171![]() r4 = rnd.Next(1, 16);
                r4 = rnd.Next(1, 16);
172![]() }
            }
173![]() else if (r3 == 15)
            else if (r3 == 15)
174![]() {
            {
175![]() r4 = rnd.Next(0, 15);
                r4 = rnd.Next(0, 15);
176![]() }
            }
177![]() else
            else
178![]() {
            {
179![]() r4 = rnd.Next(0, 16);
                r4 = rnd.Next(0, 16);
180![]() }
            }
181![]() string str_r4 = rBase[r4].Trim();
            string str_r4 = rBase[r4].Trim();
182![]()
183![]() //定义两个字节变量存储产生的随机汉字区位码
            //定义两个字节变量存储产生的随机汉字区位码 
184![]() byte byte1 = Convert.ToByte(str_r1 + str_r2, 16);
            byte byte1 = Convert.ToByte(str_r1 + str_r2, 16);
185![]() byte byte2 = Convert.ToByte(str_r3 + str_r4, 16);
            byte byte2 = Convert.ToByte(str_r3 + str_r4, 16);
186![]() //将两个字节变量存储在字节数组中
            //将两个字节变量存储在字节数组中 
187![]() byte[] str_r = new byte[] { byte1, byte2 };
            byte[] str_r = new byte[] { byte1, byte2 };
188![]()
189![]() //将产生的一个汉字的字节数组放入object数组中
            //将产生的一个汉字的字节数组放入object数组中 
190![]() bytes.SetValue(str_r, i);
            bytes.SetValue(str_r, i);
191![]()
192![]() }
        }
193![]()
194![]() return bytes;
        return bytes;
195![]()
196![]() }
    }
197![]()
198![]()
199![]() }
}
200![]()
 using System;
using System;2
 using System.Data;
using System.Data;3
 using System.Configuration;
using System.Configuration;4
 using System.Collections;
using System.Collections;5
 using System.Web;
using System.Web;6
 using System.Web.Security;
using System.Web.Security;7
 using System.Web.UI;
using System.Web.UI;8
 using System.Web.UI.WebControls;
using System.Web.UI.WebControls;9
 using System.Web.UI.WebControls.WebParts;
using System.Web.UI.WebControls.WebParts;10
 using System.Web.UI.HtmlControls;
using System.Web.UI.HtmlControls;11
 using System.Drawing;
using System.Drawing;12
 using System.Text;
using System.Text;13
 public partial class CheckCode : System.Web.UI.Page
public partial class CheckCode : System.Web.UI.Page14
 {
{15
 protected void Page_Load(object sender, EventArgs e)
    protected void Page_Load(object sender, EventArgs e)16
 {
    {17
 Encoding gb = Encoding.GetEncoding("gb2312");
        Encoding gb = Encoding.GetEncoding("gb2312");18

19
 //调用函数产生4个随机中文汉字编码
        //调用函数产生4个随机中文汉字编码 20
 object[] bytes = CreateRegionCode(4);
        object[] bytes = CreateRegionCode(4);21

22
 //根据汉字编码的字节数组解码出中文汉字
        //根据汉字编码的字节数组解码出中文汉字 23
 string str1 = gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[])));
        string str1 = gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[])));24
 string str2 = gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[])));
        string str2 = gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[])));25
 string str3 = gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[])));
        string str3 = gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[])));26
 // string str4 = gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[])));
        // string str4 = gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[])));27

28
 //输出的控制台
        //输出的控制台 29
 // Console.WriteLine(str1 + str2 + str3 + str4);
        // Console.WriteLine(str1 + str2 + str3 + str4); 30
 // Response.Write(str1 + str2 + str3 + str4);
        // Response.Write(str1 + str2 + str3 + str4);31
 //  return;
        //  return;32

33
 string srs = str1 + str2 + str3;// +str4;
        string srs = str1 + str2 + str3;// +str4;34
 Bitmap srBmp = srBitmap(srs);
        Bitmap srBmp = srBitmap(srs);35
 System.IO.MemoryStream srMS = new System.IO.MemoryStream();
        System.IO.MemoryStream srMS = new System.IO.MemoryStream();36
 srBmp.Save(srMS, System.Drawing.Imaging.ImageFormat.Gif);
        srBmp.Save(srMS, System.Drawing.Imaging.ImageFormat.Gif);37
 Response.ClearContent();
        Response.ClearContent();38
 Response.ContentType = "image/gif";
        Response.ContentType = "image/gif";39
 Response.BinaryWrite(srMS.ToArray());
        Response.BinaryWrite(srMS.ToArray());40
 srBmp.Dispose();
        srBmp.Dispose();41
 }
    }42

43
 /// <summary>
    /// <summary>44
 /// 根据指定参数返回BitMap对象
    /// 根据指定参数返回BitMap对象45
 /// 引用如下:
    /// 引用如下:46
 /// using System.Drawing;
    /// using System.Drawing;47
 /// 调用例子如下:
    /// 调用例子如下:48
 ///     eg1、保存为图象文件为
    ///     eg1、保存为图象文件为49
 ///     Bitmap srBmp = srBitmap(srs);
    ///     Bitmap srBmp = srBitmap(srs);50
 ///     srBmp.Save(Directory.GetCurrentDirectory() + "\\srs.gif", System.Drawing.Imaging.ImageFormat.Gif);
    ///     srBmp.Save(Directory.GetCurrentDirectory() + "\\srs.gif", System.Drawing.Imaging.ImageFormat.Gif);51
 ///     srBmp.Dispose();
    ///     srBmp.Dispose();52
 ///     eg2。网页中调用方式如下
    ///     eg2。网页中调用方式如下53
 ///     Bitmap srBmp = srBitmap(srs);
    ///     Bitmap srBmp = srBitmap(srs);54
 ///     System.IO.MemoryStream srMS = new System.IO.MemoryStream();
    ///     System.IO.MemoryStream srMS = new System.IO.MemoryStream();55
 ///     srBmp.Save(srMS,System.Drawing.Imaging.ImageFormat.Gif);
    ///     srBmp.Save(srMS,System.Drawing.Imaging.ImageFormat.Gif);56
 ///     Response.ClearContent();
    ///     Response.ClearContent();57
 ///     Response.ContentType = "image/gif";
    ///     Response.ContentType = "image/gif";58
 ///     Response.BinaryWrite(srMS.ToArray());
    ///     Response.BinaryWrite(srMS.ToArray());59
 ///     srBmp.Dispose();
    ///     srBmp.Dispose();60
 /// </summary>
    /// </summary>61
 /// <param name="srs"></param>
    /// <param name="srs"></param>62
 /// <returns></returns>
    /// <returns></returns> 63
 public static Bitmap srBitmap(string srs)
    public static Bitmap srBitmap(string srs)64
 {
    {65
 //定义图片弯曲的角度
        //定义图片弯曲的角度66
 int srseedangle = 10;
        int srseedangle = 10;67
 //定义图象
        //定义图象 68
 Bitmap srBmp = new Bitmap(srs.Length * 25, 30);
        Bitmap srBmp = new Bitmap(srs.Length * 25, 30);69
 //画图
        //画图70
 Graphics srGraph = Graphics.FromImage(srBmp);
        Graphics srGraph = Graphics.FromImage(srBmp);71
 //清空图象
        //清空图象72
 srGraph.Clear(Color.AliceBlue);
        srGraph.Clear(Color.AliceBlue);73
 //给图象画边框
        //给图象画边框74
 srGraph.DrawRectangle(new Pen(Color.Black, 0), 0, 0, srBmp.Width - 1, srBmp.Height - 1);
        srGraph.DrawRectangle(new Pen(Color.Black, 0), 0, 0, srBmp.Width - 1, srBmp.Height - 1);75
 //定义随即数
        //定义随即数76
 Random srRandom = new Random();
        Random srRandom = new Random();77
 //定义画笔
        //定义画笔78
 Pen srPen = new Pen(Color.LightGray, 0);
        Pen srPen = new Pen(Color.LightGray, 0);79
 //画噪点
        //画噪点80
 for (int i = 0; i < 100; i++)
        for (int i = 0; i < 100; i++)81
 {
        {82
 srGraph.DrawRectangle(srPen, srRandom.Next(1, srBmp.Width - 2), srRandom.Next(1, srBmp.Height - 2), 1, 1);
            srGraph.DrawRectangle(srPen, srRandom.Next(1, srBmp.Width - 2), srRandom.Next(1, srBmp.Height - 2), 1, 1);83
 }
        }84
 //将字符串转化为字符数组
        //将字符串转化为字符数组 85
 char[] srchars = srs.ToCharArray();
        char[] srchars = srs.ToCharArray();86
 //封状文本
        //封状文本87
 StringFormat srFormat = new StringFormat(StringFormatFlags.NoClip);
        StringFormat srFormat = new StringFormat(StringFormatFlags.NoClip);88
 //设置文本垂直居中
        //设置文本垂直居中89
 srFormat.Alignment = StringAlignment.Center;
        srFormat.Alignment = StringAlignment.Center;90
 //设置文本水平居中
        //设置文本水平居中91
 srFormat.LineAlignment = StringAlignment.Center;
        srFormat.LineAlignment = StringAlignment.Center;92
 //定义字体颜色
        //定义字体颜色93
 Color[] srColors ={ Color.Black, Color.Red, Color.DarkBlue, Color.Blue, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };
        Color[] srColors ={ Color.Black, Color.Red, Color.DarkBlue, Color.Blue, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };94
 //定义字体
        //定义字体95
 string[] srFonts ={ "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };
        string[] srFonts ={ "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };96
 //循环画出每个字符
        //循环画出每个字符97
 for (int i = 0, j = srchars.Length; i < j; i++)
        for (int i = 0, j = srchars.Length; i < j; i++)98
 {
        {99
 //定义字体 参数分别为字体样式 字体大小 字体字形
            //定义字体 参数分别为字体样式 字体大小 字体字形100
 Font srFont = new Font(srFonts[srRandom.Next(5)], srRandom.Next(12, 20), FontStyle.Regular);
            Font srFont = new Font(srFonts[srRandom.Next(5)], srRandom.Next(12, 20), FontStyle.Regular);101
 //填充图形
            //填充图形102
 Brush srBrush = new SolidBrush(srColors[srRandom.Next(7)]);
            Brush srBrush = new SolidBrush(srColors[srRandom.Next(7)]);103
 //定义坐标
            //定义坐标104
 Point srPoint = new Point(16, 16);
            Point srPoint = new Point(16, 16);105
 //定义倾斜角度
            //定义倾斜角度106
 float srangle = srRandom.Next(-srseedangle, srseedangle);
            float srangle = srRandom.Next(-srseedangle, srseedangle);107
 //倾斜
            //倾斜108
 srGraph.TranslateTransform(srPoint.X, srPoint.Y);
            srGraph.TranslateTransform(srPoint.X, srPoint.Y);109
 srGraph.RotateTransform(srangle);
            srGraph.RotateTransform(srangle);110
 //填充字符
            //填充字符111
 srGraph.DrawString(srchars[i].ToString(), srFont, srBrush, 1, 1, srFormat);
            srGraph.DrawString(srchars[i].ToString(), srFont, srBrush, 1, 1, srFormat);112
 //回归正常
            //回归正常113
 srGraph.RotateTransform(-srangle);
            srGraph.RotateTransform(-srangle);114
 srGraph.TranslateTransform(2, -srPoint.Y);
            srGraph.TranslateTransform(2, -srPoint.Y);115
 }
        }116
 srGraph.Dispose();
        srGraph.Dispose();117
 return srBmp;
        return srBmp;118
 }
    }119

120
 /**/
    /**/121
 /*
    /* 122
 此函数在汉字编码范围内随机创建含两个元素的十六进制字节数组,每个字节数组代表一个汉字,并将
    此函数在汉字编码范围内随机创建含两个元素的十六进制字节数组,每个字节数组代表一个汉字,并将 123
 四个字节数组存储在object数组中。
    四个字节数组存储在object数组中。 124
 参数:strlength,代表需要产生的汉字个数
    参数:strlength,代表需要产生的汉字个数 125
 */
    */126
 public static object[] CreateRegionCode(int strlength)
    public static object[] CreateRegionCode(int strlength)127
 {
    {128
 //定义一个字符串数组储存汉字编码的组成元素
        //定义一个字符串数组储存汉字编码的组成元素 129
 string[] rBase = new String[16] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
        string[] rBase = new String[16] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };130

131
 Random rnd = new Random();
        Random rnd = new Random();132

133
 //定义一个object数组用来
        //定义一个object数组用来 134
 object[] bytes = new object[strlength];
        object[] bytes = new object[strlength];135

136
 /**/
        /**/137
 /*每循环一次产生一个含两个元素的十六进制字节数组,并将其放入bject数组中
        /*每循环一次产生一个含两个元素的十六进制字节数组,并将其放入bject数组中 138
 每个汉字有四个区位码组成
         每个汉字有四个区位码组成 139
 区位码第1位和区位码第2位作为字节数组第一个元素
         区位码第1位和区位码第2位作为字节数组第一个元素 140
 区位码第3位和区位码第4位作为字节数组第二个元素
         区位码第3位和区位码第4位作为字节数组第二个元素 141
 */
        */142
 for (int i = 0; i < strlength; i++)
        for (int i = 0; i < strlength; i++)143
 {
        {144
 //区位码第1位
            //区位码第1位 145
 int r1 = rnd.Next(11, 14);
            int r1 = rnd.Next(11, 14);146
 string str_r1 = rBase[r1].Trim();
            string str_r1 = rBase[r1].Trim();147

148
 //区位码第2位
            //区位码第2位 149
 rnd = new Random(r1 * unchecked((int)DateTime.Now.Ticks) + i);//更换随机数发生器的种子避免产生重复值
            rnd = new Random(r1 * unchecked((int)DateTime.Now.Ticks) + i);//更换随机数发生器的种子避免产生重复值 150
 int r2;
            int r2;151
 if (r1 == 13)
            if (r1 == 13)152
 {
            {153
 r2 = rnd.Next(0, 7);
                r2 = rnd.Next(0, 7);154
 }
            }155
 else
            else156
 {
            {157
 r2 = rnd.Next(0, 16);
                r2 = rnd.Next(0, 16);158
 }
            }159
 string str_r2 = rBase[r2].Trim();
            string str_r2 = rBase[r2].Trim();160

161
 //区位码第3位
            //区位码第3位 162
 rnd = new Random(r2 * unchecked((int)DateTime.Now.Ticks) + i);
            rnd = new Random(r2 * unchecked((int)DateTime.Now.Ticks) + i);163
 int r3 = rnd.Next(10, 16);
            int r3 = rnd.Next(10, 16);164
 string str_r3 = rBase[r3].Trim();
            string str_r3 = rBase[r3].Trim();165

166
 //区位码第4位
            //区位码第4位 167
 rnd = new Random(r3 * unchecked((int)DateTime.Now.Ticks) + i);
            rnd = new Random(r3 * unchecked((int)DateTime.Now.Ticks) + i);168
 int r4;
            int r4;169
 if (r3 == 10)
            if (r3 == 10)170
 {
            {171
 r4 = rnd.Next(1, 16);
                r4 = rnd.Next(1, 16);172
 }
            }173
 else if (r3 == 15)
            else if (r3 == 15)174
 {
            {175
 r4 = rnd.Next(0, 15);
                r4 = rnd.Next(0, 15);176
 }
            }177
 else
            else178
 {
            {179
 r4 = rnd.Next(0, 16);
                r4 = rnd.Next(0, 16);180
 }
            }181
 string str_r4 = rBase[r4].Trim();
            string str_r4 = rBase[r4].Trim();182

183
 //定义两个字节变量存储产生的随机汉字区位码
            //定义两个字节变量存储产生的随机汉字区位码 184
 byte byte1 = Convert.ToByte(str_r1 + str_r2, 16);
            byte byte1 = Convert.ToByte(str_r1 + str_r2, 16);185
 byte byte2 = Convert.ToByte(str_r3 + str_r4, 16);
            byte byte2 = Convert.ToByte(str_r3 + str_r4, 16);186
 //将两个字节变量存储在字节数组中
            //将两个字节变量存储在字节数组中 187
 byte[] str_r = new byte[] { byte1, byte2 };
            byte[] str_r = new byte[] { byte1, byte2 };188

189
 //将产生的一个汉字的字节数组放入object数组中
            //将产生的一个汉字的字节数组放入object数组中 190
 bytes.SetValue(str_r, i);
            bytes.SetValue(str_r, i);191

192
 }
        }193

194
 return bytes;
        return bytes;195

196
 }
    }197

198

199
 }
}200

    点个广告:
 
                    
                 


 
     
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号