100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C#生成漂亮验证码的完整示例代码分享

C#生成漂亮验证码的完整示例代码分享

时间:2020-06-28 00:25:43

相关推荐

C#生成漂亮验证码的完整示例代码分享

后端开发|C#.Net教程

C#,验证码

后端开发-C#.Net教程

本文主要介绍了C#生成漂亮验证码的完整代码类。具有很好的参考价值。下面跟着小编一起来看下吧

plc源码,ubuntu重新分区工具,tomcat定位荡机问题,爬虫网站崩溃,学习php知识交流,沧州百度seo关键词优化lzw

话不多说,请看代码:

搞笑弹框的源码,ubuntu 加入开机启动,tomcat7解压缩版,怎么爬虫网页信息,南通php工程师招聘网,阿不seolzw

using System;using System.Web;using System.Drawing;using System.Security.Cryptography;namespace DotNet.Utilities{ /// public class Rand { #region 生成随机数字 ////// 生成长度 public static string Number(int Length) {return Number(Length, false); } ////// 生成长度 /// 是否要在生成前将当前线程阻止以避免重复 public static string Number(int Length, bool Sleep) {if (Sleep) System.Threading.Thread.Sleep(3);string result = "";System.Random random = new Random();for (int i = 0; i < Length; i++){ result += random.Next(10).ToString();}return result; } #endregion #region 生成随机字母与数字 ////// 生成长度 public static string Str(int Length) {return Str(Length, false); } ////// 生成长度 /// 是否要在生成前将当前线程阻止以避免重复 public static string Str(int Length, bool Sleep) {if (Sleep) System.Threading.Thread.Sleep(3);char[] Pattern = new char[] { , 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y,  };string result = "";int n = Pattern.Length;System.Random random = new Random(~unchecked((int)DateTime.Now.Ticks));for (int i = 0; i < Length; i++){ int rnd = random.Next(0, n); result += Pattern[rnd];}return result; } #endregion #region 生成随机纯字母随机数 ////// 生成长度 public static string Str_char(int Length) {return Str_char(Length, false); } ////// 生成长度 /// 是否要在生成前将当前线程阻止以避免重复 public static string Str_char(int Length, bool Sleep) {if (Sleep) System.Threading.Thread.Sleep(3);char[] Pattern = new char[] { A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y,  };string result = "";int n = Pattern.Length;System.Random random = new Random(~unchecked((int)DateTime.Now.Ticks));for (int i = 0; i < Length; i++){ int rnd = random.Next(0, n); result += Pattern[rnd];}return result; } #endregion } /// public class YZMHelper { #region 私有字段 private string text; private Bitmap image; private int letterCount = 4; //验证码位数 private int letterWidth = 16; //单个字体的宽度范围 private int letterHeight = 20; //单个字体的高度范围 private static byte[] randb = new byte[4]; private static RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider(); private Font[] fonts = { new Font(new FontFamily("Times New Roman"),10 +Next(1),System.Drawing.FontStyle.Regular), new Font(new FontFamily("Georgia"), 10 + Next(1),System.Drawing.FontStyle.Regular), new Font(new FontFamily("Arial"), 10 + Next(1),System.Drawing.FontStyle.Regular), new Font(new FontFamily("Comic Sans MS"), 10 + Next(1),System.Drawing.FontStyle.Regular) }; #endregion #region 公有属性 ///public string Text {get { return this.text; } } ///public Bitmap Image {get { return this.image; } } #endregion #region 构造函数 public YZMHelper() {HttpContext.Current.Response.Expires = 0;HttpContext.Current.Response.Buffer = true;HttpContext.Current.Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1);HttpContext.Current.Response.AddHeader("pragma", "no-cache");HttpContext.Current.Response.CacheControl = "no-cache";this.text = Rand.Number(4);CreateImage(); } #endregion #region 私有方法 ////// 最大值 private static int Next(int max) {rand.GetBytes(randb);int value = BitConverter.ToInt32(randb, 0);value = value % (max + 1);if (value < 0) value = -value;return value; } ////// 最小值 /// 最大值 private static int Next(int min, int max) {int value = Next(max - min) + min;return value; } #endregion #region 公共方法 ///public void CreateImage() {int int_ImageWidth = this.text.Length * letterWidth;Bitmap image = new Bitmap(int_ImageWidth, letterHeight);Graphics g = Graphics.FromImage(image);g.Clear(Color.White);for (int i = 0; i < 2; i++){ int x1 = Next(image.Width - 1); int x2 = Next(image.Width - 1); int y1 = Next(image.Height - 1); int y2 = Next(image.Height - 1); g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);}int _x = -12, _y = 0;for (int int_index = 0; int_index < this.text.Length; int_index++){ _x += Next(12, 16); _y = Next(-2, 2); string str_char = this.text.Substring(int_index, 1); str_char = Next(1) == 1 ? str_char.ToLower() : str_char.ToUpper(); Brush newBrush = new SolidBrush(GetRandomColor()); Point thePos = new Point(_x, _y); g.DrawString(str_char, fonts[Next(fonts.Length - 1)], newBrush, thePos);}for (int i = 0; i < 10; i++){ int x = Next(image.Width - 1); int y = Next(image.Height - 1); image.SetPixel(x, y, Color.FromArgb(Next(0, 255), Next(0, 255), Next(0, 255)));}image = TwistImage(image, true, Next(1, 3), Next(4, 6));g.DrawRectangle(new Pen(Color.LightGray, 1), 0, 0, int_ImageWidth - 1, (letterHeight - 1));this.image = image; } ///public Color GetRandomColor() {Random RandomNum_First = new Random((int)DateTime.Now.Ticks);System.Threading.Thread.Sleep(RandomNum_First.Next(50));Random RandomNum_Sencond = new Random((int)DateTime.Now.Ticks);int int_Red = RandomNum_First.Next(180);int int_Green = RandomNum_Sencond.Next(180);int int_Blue = (int_Red + int_Green > 300) ? 0 : 400 - int_Red - int_Green;int_Blue = (int_Blue > 255) ? 255 : int_Blue;return Color.FromArgb(int_Red, int_Green, int_Blue); } ////// 图片路径 /// 如果扭曲则选择为True /// 波形的幅度倍数,越大扭曲的程度越高,一般为3 /// 波形的起始相位,取值区间[0-2*PI) public System.Drawing.Bitmap TwistImage(Bitmap srcBmp, bool bXDir, double dMultValue, double dPhase) {double PI = 6.283185307179586476925286766559;Bitmap destBmp = new Bitmap(srcBmp.Width, srcBmp.Height);Graphics graph = Graphics.FromImage(destBmp);graph.FillRectangle(new SolidBrush(Color.White), 0, 0, destBmp.Width, destBmp.Height);graph.Dispose();double dBaseAxisLen = bXDir ? (double)destBmp.Height : (double)destBmp.Width;for (int i = 0; i < destBmp.Width; i++){ for (int j = 0; j = 0 && nOldX = 0 && nOldY < destBmp.Height){ destBmp.SetPixel(nOldX, nOldY, color);} }}srcBmp.Dispose();return destBmp; } #endregion }}

整站源码模板后台下载,ubuntu 架构图,点击tomcat闪了一下,爬虫生态饲养箱,php二维数组组合求和,江油快照seolzw

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。