验证码的生成与验证
来源:互联网 发布:淘宝店铺托管安全吗 编辑:程序博客网 时间:2024/06/03 19:24
直接创建一个方法,需要的时候调用就行。
private void CreateImage(string strVerifyCode) { try { int iRandAngle = 45; //随机转动角度 int iMapWidth = (int)(strVerifyCode.Length * 21); Bitmap map = new Bitmap(iMapWidth, 28); //创建图片背景 Graphics graph = Graphics.FromImage(map); graph.Clear(Color.AliceBlue);//清除画面,填充背景 graph.DrawRectangle(new Pen(Color.Black, 0), 0, 0, map.Width - 1, map.Height - 1);//画一个边框 graph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//模式 Random rand = new Random(); //背景噪点生成 Pen blackPen = new Pen(Color.LightGray, 0); for (int i = 0; i < 50; i++) { int x = rand.Next(0, map.Width); int y = rand.Next(0, map.Height); graph.DrawRectangle(blackPen, x, y, 1, 1); } //验证码旋转,防止机器识别 char[] chars = strVerifyCode.ToCharArray();//拆散字符串成单字符数组 //文字距中 StringFormat format = new StringFormat(StringFormatFlags.NoClip); format.Alignment = StringAlignment.Center; format.LineAlignment = StringAlignment.Center; //定义颜色 Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple }; //定义字体 string[] font = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" }; for (int i = 0; i < chars.Length; i++) { int cindex = rand.Next(7); int findex = rand.Next(5); Font f = new System.Drawing.Font(font[findex], 13, System.Drawing.FontStyle.Bold);//字体样式(参数2为字体大小) Brush b = new System.Drawing.SolidBrush(c[cindex]); Point dot = new Point(16, 16); float angle = rand.Next(-iRandAngle, iRandAngle);//转动的度数 graph.TranslateTransform(dot.X, dot.Y);//移动光标到指定位置 graph.RotateTransform(angle); graph.DrawString(chars[i].ToString(), f, b, 1, 1, format); graph.RotateTransform(-angle);//转回去 graph.TranslateTransform(2, -dot.Y);//移动光标到指定位置 } // pbVerifyCode.Image = map; pictureBox1.Image = map; } catch (ArgumentException) { MessageBox.Show("创建图片错误。"); } }
0 0
- Android验证码的生成与验证
- 验证码的生成与验证
- 验证码的生成与验证
- 验证码生成与验证
- 验证码的生成与验证1-------两个页面搞定
- 【Servlet】实现简单的验证码生成与验证
- 验证码的生成与验证,控制层工具
- Thinkphp生成验证码与自动验证
- 验证码的生成与使用
- 验证码的生成与刷新
- 汉字验证码的生成与使用
- 验证码的生成
- 验证码的生成
- 验证码的生成
- 验证码的生成
- 验证码的生成
- 验证码的生成
- 验证码的生成
- [IDEA]快捷键使用心得1
- bzoj1968[Ahoi2005]COMMON 约数研究
- .bash_profile 和 .bashrc的区别
- Z-22
- 第一次面试经历
- 验证码的生成与验证
- 二分查找c++代码
- 数据库事务的四大特性以及事务的隔离级别
- 开始为大家回答各种Web前端问题啦~
- 贪心算法-数列极差问题(对前篇文章的修改)
- 类与类之间的几种关系
- 测试golang中的多核多线程
- 当spring 容器初始化完成后执行某个方法
- Picasso的用法