首页 > 其他分享 >Winform实现验证码功能

Winform实现验证码功能

时间:2023-09-03 16:11:25浏览次数:40  
标签:功能 int 验证码 Next rd bMap new Winform

介绍下Winform实现验证码的步骤:

首先拖入控件:PictureBox显示验证码;TextBox输入验证码;Check按钮;Label标签-点击更换验证码;

1.随机产生一个4位的字符串,由数字,大小写字母组成:

string RandomCode()
{
    string retCode = "";
    for (int i = 0; i < 4; i++)
    {
        while (true)
        {
            int id = rd.Next(48, 122);
            if (id >= 48 && id <= 57 || id >= 65 && id <= 90 || id >= 97 && id <= 122)
            {
                retCode += Convert.ToChar(id).ToString();
                break;
            }
        }
    }
    return retCode;
}

2.创建画板:

Bitmap bMap = new Bitmap(this.pictureBox1.Width,this.pictureBox1.Height);
Graphics g = Graphics.FromImage(bMap);
g.Clear(Color.LightGray);

3.在画板上画几条颜色随机的线条:

for (int i = 0; i < 8; i++)
{
    int x1 = rd.Next(bMap.Width);
    int y1 = rd.Next(bMap.Height);
    int x2 = rd.Next(bMap.Width);
    int y2 = rd.Next(bMap.Height);
    g.DrawLine(new Pen(Color.FromArgb(rd.Next())), x1, y1, x2, y2);
}

4.画一些背景噪点,颜色随机:

for (int i = 0; i < 600; i++)
{
    int x = rd.Next(this.pictureBox1.Width);
    int y = rd.Next(this.pictureBox1.Height);
    bMap.SetPixel(x, y, Color.FromArgb(rd.Next()));
}

5.画验证码:

Font ft = new Font("宋体", 24, FontStyle.Bold | FontStyle.Italic);
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(
    new Rectangle(0, 0, bMap.Width, bMap.Height), Color.OrangeRed, Color.DarkOrchid, 1.2f, true);
for (int i = 0; i < codeStr.Length; i++)
{
    g.DrawString(codeStr[i].ToString(), ft, brush, 5 + 23 * i, -1);
}

6.将画好的图像赋给PictureBox:

this.pictureBox1.Image = bMap;
g.Dispose();
ft.Dispose();

7.按钮点击事件:

private void Form1_Load(object sender, EventArgs e)
{
    rd = new Random();
    CreateCodeImage(checkCode = RandomCode());
}

private void label1_Click(object sender, EventArgs e)
{
    CreateCodeImage(checkCode = RandomCode());
}

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text != checkCode)
    {
        MessageBox.Show("验证失败,请重新输入", "提示");
        CreateCodeImage(checkCode = RandomCode());
    }
    else
        MessageBox.Show("验证通过", "提示");
}

x效果展示:

 

 

  

  

  

  

  

  

  

标签:功能,int,验证码,Next,rd,bMap,new,Winform
From: https://www.cnblogs.com/cfsl/p/17675090.html

相关文章

  • PrismMVVM功能实现(通知、命令)
    常见的MVVM框架,基本围绕ICommand、INotifyPropertyChanged的封装实现绑定、通知等功能;而对于不同框架,在实现相同功能上,只是表现的形式有所不同,下图列举几种常见框架的功能区别:功能\框架PrismMVVMLightMicorsoft.Tookit.Mvvm通知BindableBaseViewModelBaseObservableO......
  • 为WordPress插件添加自动检测更新和一键升级功能
    自己做了插件给别人来用,然后更新新功能之后,别人也不知道只能是通过发邮件之类的提醒进行。  今天为大家介绍下,自己开发的插件如何增加版本检测和一键更新。  设置远程服务和添加插件检测功能  1、下载所需文件(搜索:ts小陈)  plugin-update-checker ......
  • 图形验证码和短信验证码实战
    前言:上一篇分分享了基于阿里云实现的短信验证码文章,考虑到为了防止登录时,非人工操作,频繁获取验证码,趁热打铁,现在添加了图片验证码服务功能。借鉴网上传统的做法,把实现这两个验证的功能做成有个独立的服务,通过Http分别请求获取校验图片验证码和短信验证码。一、需求描述:图形验证码为......
  • 设计一个有getMin功能的栈
    一题目实现一个特殊的栈,实现栈的基本功能并实现返回栈中最小元素的操作。二要求1、pop、push、getMin操作时间复杂度都是O(1)2、设计的栈类型可以使用现成的栈结构三分析我们可以使用两个栈,一个用来保存当前栈中的元素,其功能为正常的栈,记为stackData;另外一个用于保存每一步中的最......
  • wangEditor增加源码模式,添加查看源码功能
    wangEditor是一款轻量级的富文本编辑器。使用还比较方便,但是缺少查看源码模式,需要我们自定义一个menu给增加查看源码模式下面是wangEditor增加源码模式的代码:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="......
  • EasyPlayer开放外部录像接口:自由扩展H.265网页播放功能
    EasyPlayer通过实现视频实时录像功能,不仅提供轻量化、便捷化的视频资源下载能力,同时有效减少了带宽和计算资源的消耗。这种创新的功能使得用户可以灵活地获取所需的视频数据,为其节省使用成本并提升整体效率。今天我们来分享一下EasyPlayer播放器对外开放录像的方法。1)在播放器内部......
  • Xshell永久安装完全指南:畅享所有高级功能
    前言Xshell是一款功能强大的SSH远程终端客户端。Xshell支持远程协议Telnet、Rlogin、SSH/SSHPKCS,主要用于在Windows系统上远程操控服务器进行工作以及统一管理多台服务器集群,它通过多种不同的连接协议和密码,保障着用户的连接服务器安全。一、安装xshell安装包在文末附带,并提供了免......
  • 基于阿里云服务实现短信验证码功能
    前言:阿里云短信服务是一项基于云计算和大数据技术的企业级短信平台服务。它能够为企业和开发者提供高可用、高性能、高稳定性的短信发送服务,可以快速地将各类业务通知、验证码、营销推广等信息发送给用户。在我们经常登录一些系统或者APP时候,经常会遇到其他登录登录方式——短信验......
  • eureka加入认证功能
    为了注册中的安全性,我们需要加入eureka登录的认证功能,然后该功能的添加涉及两部分,一部分是eureka服务端,另一部分是eureka客户端eureka服务端配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-secur......
  • java POI实现导入导出功能
    导入POI库的依赖项,在项目中加入以下Maven依赖项:<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi......