winform登录时载入验证码,并且点击可刷新
来源:互联网 发布:传奇盗取管理权限软件 编辑:程序博客网 时间:2024/06/08 10:17
找不到代码的原作者,若原作者看到可联系我删除
#region 生成验证码 #region 生成一定长度随机码 private const int codelength = 4;//随机码长度 private string randomCode = ""; //随机码 public string CreateCode(int length) //生成一定长度随机码 { int rand; char code; string randomCode = string.Empty; System.Random random = new Random(); for (int i = 0; i < length; i++) { rand = random.Next(); if (rand % 3 == 0) { code = (char)('A' + (char)(rand % 26)); } else code = (char)('0' + (char)(rand % 10)); randomCode += code.ToString(); } return randomCode; } #endregion #region 生成随机图片 public void CreateImagine(string randomCode) //生成随机图片 { try { int randAngle = 45; int mapwidth = (int)(randomCode.Length * 21); Bitmap map = new Bitmap(mapwidth, 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 = randomCode.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(-randAngle, randAngle);//转动的度数 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);//移动光标到指定位置 } pb_AuthCode.Image = map; } catch (Exception ex) { MessageBox.Show(ex.Message, "提示"); } } #endregion #region 更新验证码图片 private void updateCode() { randomCode = CreateCode(codelength); CreateImagine(randomCode); } public void pb_AuthCode_Click_1(object sender, EventArgs e) { updateCode(); } #endregion #endregion
0 0
- winform登录时载入验证码,并且点击可刷新
- c#生成验证码 点击可刷新
- asp.net(c#)生成验证码 点击可刷新
- asp.net(c#)生成验证码 点击可刷新
- asp.net(c#)生成验证码 点击可刷新
- [转]asp.net(c#)生成验证码 点击可刷新
- asp.net(c#)生成验证码 点击可刷新
- php生成验证码,点击可刷新的实例
- ASP.NET中怎样实现图片验证码功能,并且点击图片会刷新
- php验证码点击刷新
- [php] 点击刷新验证码
- 点击验证码重新刷新
- js点击刷新验证码
- TP5 验证码点击刷新
- Django 点击刷新验证码
- java实现网页的验证码的改良版(火狐可点击刷新)
- 验证码实现,点击控件不进行页面刷新可参考此文档
- TP5验证码点击刷新与验证
- 运算符重载(二)
- C++primer plus第六版课后编程练习答案5.7
- git的简单命令
- UI_界面传值方式
- linux nginx 配置 上传等限制
- winform登录时载入验证码,并且点击可刷新
- PHP 解析JSON数组
- 单个listView展示多类型Item出现混乱显示的问题
- opencv2.4.9中K-means算法理解
- 自定义事件分发,执行耗时操作服务
- 容斥原理-shuoj—小明系列之高中时光
- Java instanceof
- JAVA编程中为了提高性能必须要考虑的东西
- RadioGroup+Fragment实现页面之间的切换