日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Winform中实现中文验证码(附代码下载)

發布時間:2025/3/19 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Winform中实现中文验证码(附代码下载) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景

中文驗證碼效果

?

?

注:

博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

實現

新建一個窗體頁面,設計布局如下

?

其中顯示驗證碼的是PictureBox

然后進入窗體代碼中修改為

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing.Imaging; using System.Drawing.Drawing2D; namespace ChineseCode {public partial class Form1 : Form{public Form1(){InitializeComponent();}public string txt = "";private void Form1_Load(object sender, EventArgs e){CreateImage();}private void CreateImage(){//獲取GB2312編碼頁(表)Encoding gb = Encoding.GetEncoding("gb2312");//調用函數產生4個隨機中文漢字編碼object[] bytes = CreateCode(4);//根據漢字編碼的字節數組解碼出中文漢字string str1 = gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[])));string str2 = gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[])));string str3 = gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[])));string str4 = gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[])));txt = str1 + str2 + str3 + str4;if (txt == null || txt == String.Empty){return;}Bitmap image = new Bitmap((int)Math.Ceiling((txt.Length * 20.5)), 22);Graphics g = Graphics.FromImage(image);try{//生成隨機生成器Random random = new Random();//清空圖片背景色g.Clear(Color.White);//畫圖片的背景噪音線for (int i = 0; i < 2; i++){Point tem_Point_1 = new Point(random.Next(image.Width), random.Next(image.Height));Point tem_Point_2 = new Point(random.Next(image.Width), random.Next(image.Height));g.DrawLine(new Pen(Color.Black), tem_Point_1, tem_Point_2);}Font font = new Font("宋體", 12, (FontStyle.Bold));LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);g.DrawString(txt, font, brush, 2, 2);//畫圖片的前景噪音點for (int i = 0; i < 100; i++){Point tem_point = new Point(random.Next(image.Width),random.Next(image.Height));image.SetPixel(tem_point.X,tem_point.Y, Color.FromArgb(random.Next()));}//畫圖片的邊框線g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);pictureBox1.Image = image;}catch { }}/**//*此函數在漢字編碼范圍內隨機創建含兩個元素的十六進制字節數組,每個字節數組代表一個漢字,并將四個字節數組存儲在object數組中。參數:strlength,代表需要產生的漢字個數*/public static object[] CreateCode(int strlength){//定義一個字符串數組儲存漢字編碼的組成元素string[] r=new String [16]{"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};Random rnd=new Random();//定義一個object數組用來object[] bytes=new object[strlength];/**//*每循環一次產生一個含兩個元素的十六進制字節數組,并將其放入bject數組中每個漢字有四個區位碼組成區位碼第1位和區位碼第2位作為字節數組第一個元素區位碼第3位和區位碼第4位作為字節數組第二個元素*/for(int i=0;i<strlength;i++){//區位碼第1位int r1=rnd.Next(11,14);string str_r1 = r[r1].Trim();//區位碼第2位rnd=new Random(r1*unchecked((int)DateTime.Now.Ticks)+i);//更換隨機數發生器的種子避免產生重復值int r2;if (r1==13)r2=rnd.Next(0,7);elser2=rnd.Next(0,16);string str_r2 = r[r2].Trim();//區位碼第3位rnd=new Random(r2*unchecked((int)DateTime.Now.Ticks)+i);int r3=rnd.Next(10,16);string str_r3 = r[r3].Trim();//區位碼第4位rnd=new Random(r3*unchecked((int)DateTime.Now.Ticks)+i);int r4;if (r3==10){r4=rnd.Next(1,16);}else if (r3==15){r4=rnd.Next(0,15);}else{r4=rnd.Next(0,16);}string str_r4 = r[r4].Trim();//定義兩個字節變量存儲產生的隨機漢字區位碼byte byte1=Convert.ToByte(str_r1 + str_r2,16);byte byte2=Convert.ToByte(str_r3 + str_r4,16);//將兩個字節變量存儲在字節數組中byte[] str_r=new byte[]{byte1,byte2};//將產生的一個漢字的字節數組放入object數組中bytes.SetValue(str_r,i);???}return bytes;}private void button2_Click(object sender, EventArgs e){CreateImage();}private void button1_Click(object sender, EventArgs e){if (txtCode.Text.Trim() == "")return;else{if (txtCode.Text.Trim() == txt){MessageBox.Show("提示:驗證碼輸入正確!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}else{MessageBox.Show("提示:驗證碼輸入錯誤,請重新輸入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);}}}} }

代碼下載

https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/12243420

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Winform中实现中文验证码(附代码下载)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美性猛交xxxx乱大交hd | 午夜欧美精品久久久久久久 | 婷久久| 巨胸挤奶视频www网站 | eeuss一区二区三区 | 亚洲喷潮 | 成人1区2区 | 中文字幕在线观看一区二区 | 手机av电影在线 | 成人国产一区二区 | 91日韩中文字幕 | 桃色av网站 | 午夜特级毛片 | 亚洲图片 自拍偷拍 | 国产福利在线看 | 久操资源网| 香蕉一区二区 | 日本xxxx在线观看 | 超碰在线cao | 泷泽萝拉在线播放 | 视频在线日韩 | 婷婷激情久久 | 免费观看黄色一级视频 | 我们的生活第五季在线观看免费 | 日韩成人精品在线观看 | 国产主播在线播放 | 成人黄色电影在线 | 精品人妻伦一二三区免费 | 美女精品一区 | 一本一本久久a久久精品综合麻豆 | 欧美激情一区二区三区p站 欧美mv日韩mv国产网站app | 91看片看淫黄大片 | 91偷拍网站 | 欧美三级久久 | 亚洲精品乱码久久久久久黑人 | 欧美日韩在线视频播放 | 日韩中文字幕久久 | 人人插人人看 | 一本色道久久亚洲综合精品蜜桃 | 男人日女人在线观看 | 日本不卡视频一区二区三区 | 制服一区二区 | 在线观看天堂av | 国内自拍视频网站 | 三点尽露的大尺度国产 | 天堂中文在线看 | 我们的生活第五季在线观看免费 | 久久免费偷拍视频 | 亚洲一级网 | 人人射人人爽 | 911成人网 | 免费爱爱网址 | 久久激情综合 | 国产精品久久久久影院老司 | 成年人黄色一级片 | 日本真人做爰免费视频120秒 | 伊人久久影院 | 亚洲综合第一页 | 中文字幕在线欧美 | 亚洲一区二区久久久 | 一区二区三区视频免费看 | 在线播放黄色网址 | 欧美一级夜夜爽 | 欧美亚洲综合一区 | 国产真实偷伦视频 | 久久久久久一区 | 天天操一操 | 欧美视频一二三 | 免费黄色欧美 | 中文字幕91爱爱 | 狠狠艹狠狠干 | 亚洲三级视频在线观看 | 日韩成人综合 | 午夜精品一区二区三区在线视频 | 国产不卡一 | 久久r精品| 国产原创在线 | 午夜影片 | 免费色站 | 日韩久久久久久久久久 | 老熟女高潮一区二区三区 | 欧美激情精品久久久久久 | 九一国产精品 | 国产视频一二区 | 亚洲精品中文字幕在线观看 | 麻豆av一区二区三区在线观看 | 波岛野结衣| 婷婷久久五月 | 黄色在线免费看 | 久久久久国产视频 | 在线观看视频你懂得 | 国产精品久久久爽爽爽麻豆色哟哟 | 大屁股白浆一区二区 | 亚洲女优在线观看 | 在线国产欧美 | 99热国产在线观看 | 久久久久久成人精品 | 精品一区精品二区 | 亚洲天堂一级 |