简单的验证码Winform程序

之前想过写验证的的小程序,一直没写,现在手头项目结项,根据自己的思路快的写了个小的WinForm的验证码程序。代码简单没有多大难度。

frmVerification.cs前台

winform项目中的frmVerification.cs后台代骊

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using VerificationCode;

namespace VerificationCodeUI
{
    public partial class frmVerification : Form
    {
        CodeImg codeImg;
        string strCode;
        public frmVerification()
        {
            InitializeComponent();
            codeImg = new CodeImg();
            GetCodeImg();
        }
        private void GetCodeImg()
        {
            pictureBox1.Image = codeImg.GetCodeImg(4, pictureBox1.Width, pictureBox1.Height, out strCode);
        }
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            GetCodeImg();
        }

private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.ToLower() == strCode.ToLower())
                MessageBox.Show("OK");
            else
                MessageBox.Show("No");
        }
    }
}

dll项目中的CodeImg.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;

namespace VerificationCode
{
    public class CodeImg
    {
        int length;
        /// <summary>
        /// 长度
        /// </summary>
        public int Length
        {
            get { return length; }
            set { length = value; }
        }
        int width;
        /// <summary>
        /// 宽度
        /// </summary>
        public int Width
        {
            get { return width; }
            set { width = value; }
        }
        int height;
        /// <summary>
        /// 高度
        /// </summary>
        public int Height
        {
            get { return height; }
            set { height = value; }
        }
        string code = "";
        /// <summary>
        /// 验证码
        /// </summary>
        public string Code
        {
            get { return code; }
            set { code = value; }
        }

/// <summary>
        /// 随机的字符数组
        /// </summary>
        string[] seeds={"1","2","3","4","5","6","7","8","9","0",
                            "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","Z",
                            "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","z"
        };

public string[] Seeds
        {
            get { return seeds; }
            set { seeds = value; }
        }

public CodeImg()
        {
            
        }
        public CodeImg(int w,int h)
        {
            Width = w;
            Height = h;
        }

public Image GetCodeImg(int length,int w,int h,out string strCode)
        {
            Random rand;

StringBuilder strbCode=new StringBuilder();
            int index=0;

Rectangle rect = new Rectangle(0, 0, w, h);
            Bitmap bitMap = new Bitmap(w, h);
            Image codeImg = bitMap;
            Graphics g = Graphics.FromImage(codeImg);
            int fontSize = 16;
            Font f = new Font("宋体", fontSize);
            SolidBrush s=new SolidBrush(Color.Red);
            int x = fontSize + 4;
            int y=Convert.ToInt32(Math.Ceiling((decimal)((h - 16) / 2)));
            int zeed = 0;
            for(int i=0;i<length;i++)
            {
                zeed = (int)(DateTime.Now.Ticks);

rand = new Random(zeed);
                index=rand.Next(Seeds.Length);
                strbCode.Append(seeds[index]);

g.DrawString(seeds[index], f, s, x * i, y);
                System.Threading.Thread.Sleep(50);
            }
            strCode = strbCode.ToString();
            return codeImg;
        }
    }
}

时间: 2024-11-03 02:26:22

简单的验证码Winform程序的相关文章

使用.net core3.0 正式版创建Winform程序

前阵子一直期待.net core3.0正式版本的出来,以为这个版本出来,Winform程序又迎来一次新生了,不过9.23日出来的马上下载更新VS,创建新的.net core Winform项目,发现并没有Winform窗体设计器.而微软目前则是通过插件的方式,让我们单独下载Winform设计器,这个设计器还是预览版本,很多功能还是没有实现的,只能算是一个简单的雏形,本博客案例介绍基于.net core3.0创建一个普通的WInform程序,让大家了解下基于.net core3.0创建的程序的大概

一个简单的winform程序调用webservices

本文原创,如需转载,请标明源地址,谢谢合作!http://blog.csdn.net/sue_1989/article/details/6597078 本文的编写IDE为VSTS2008和.NET Framework3.5 ,其他版本的VS或.Net Framework类似 本示例程序说明:从WinForm程序调用本机的WebServices的方法,返回两个数的和 1. 新建>>项目>>ASP.NET Web 服务应用程序,命名为 WebServiceTest,OK 2.打开Ser

C#Winform程序如何发布并自动升级(图解)

有不少朋友问到C#Winform程序怎么样配置升级,怎么样打包,怎么样发布的,在这里我解释一下打包和发布 关于打包的大家可以看我的文章C# winform程序怎么打包成安装项目(图解) 其实打包是打包,发布是发布两者是没有任何关系的,只是有些同志会分不清楚.混在一起了. 下在面大家就和我一起来做一个发布并升级的程序吧. 首先我们准备几个工作 1.新建一个存储发布后程序的目录比如D:\iis\textWinform  以下简称-- 发布目录 2.在IIS新建一个网站并指向目录D:\iis\auto

黄聪:C#Winform程序如何发布并自动升级(图解)

有不少朋友问到C#Winform程序怎么样配置升级,怎么样打包,怎么样发布的,在这里我解释一下打包和发布关于打包的大家可以看我的文章C# winform程序怎么打包成安装项目(图解)其实打包是打包,发布是发布两者是没有任何关系的,只是有些同志会分不清楚.混在一起了.下在面大家就和我一起来做一个发布并升级的程序吧.首先我们准备几个工作1.新建一个存储发布后程序的目录比如D:\iis\textWinform  以下简称-- 发布目录2.在IIS新建一个网站并指向目录D:\iis\autoWinfro

简单制作验证码和绘制图片

今天仍然是完善一般处理程序小项目,但是昨天小小的项目已经终结,今天只是完善一下新的样式罢啦,嘿嘿,我们通常在网上浏览图片时间都会看到图片上面呈现有水印字体的样式,其实这些图片都是通过一些简单的小技术来修饰的:另外我们现在在网上随处可见注册页面,当我们想在一个网站上面注册新的用户时间,需要注册完信息以后填写随机生成的验证码,或者我们想要登录一个网站时间也需要验证码的填写,由此可见,验证码也是我们程序员需要必备的小技术哦,下面就来总结一下这两项小功能的实现. 一.图片上的水印字体 我们可以看到第一张

winform开发 总结1&gt;winform程序使用线程的必要性,以及正确的使用方式

winform程序中使用线程的必要性: 单线程操作在执行耗时任务时会造成界面假死,带来非常差劲的用户体验,有时候甚至会影响到正常的业务执行,使用多线程做相关操作实属不得已之举. 那么在编写程序之前必须要明白的一个点就是窗体的UI的操作只能通过UI线程来执行,其他线程如果要去执行窗体中的控件值修改或者其它[任何和窗体线程相关的操作],就会报异常,所有人都知道的.为了适应这一特性,于是就有了这样的写法: private void button1_Click(object sender, EventA

解析最简单的验证码

最近在学python,正好遇到学校需要选宿舍,就用python写了一个抢宿舍的软件.其中有一个模块是用来登陆的,登陆的时候需要输入验证码,不过后来发现了直接可以绕过验证码直接登陆的bug.不过这是另外的话题,开始的时候我并没有发现这个隐藏起来的秘密,所以我就写了这个python代码段用来实现解析验证码的功能. 我们学校的验证码是最简单的验证码,形式大概如下: 其中这个图片的大小是60X24像素的,大概每个数字的大小是15X24像素. 观察这个验证码之后可以发现,验证码中只有数字而且数字的字体很规

学习笔记:利用GDI+生成简单的验证码图片

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 学习笔记:利用GDI+生成简单的验证码图片 1 /// <summary> 2 /// 单击图片时切换图片 3 /// </summary> 4 /// <param name="sender">&

html中的js调用c#的winform程序

简单来说,就是在c#客户端winform中加载一个webBrowser1,然后通过webBrowser1中对页面的点击js效果触发c#的函数响应.亲测通过. C#代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using S