C#生成多颜色的验证码

原创 2017年01月03日 17:19:31

添加引用

using System.Drawing;
using System.Drawing.Drawing2D;


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


namespace WebApplication1.WebHelper
{
    public static class CreateCode
    {
        /// <summary>
        /// 创建验证码字符
        /// </summary>
        /// <param name="length">字符长度</param>
        /// <returns>验证码字符</returns>
        public static string CreateVerificationText(int length)
        {
            char[] _verification = new char[length];
            char[] _dictionary = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H','J', 'K', 'L', 'M', 'N',  'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'm', 'n','p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', '1', '3', '4', '5', '6', '7', '8', '9' };//去除O 0 z 21 l这些容易混错的字母
            Random _random = new Random();
            for (int i = 0; i < length; i++) { _verification[i] = _dictionary[_random.Next(_dictionary.Length - 1)]; }
            return new string(_verification);
        }


        /// <summary>
        /// 创建验证码图片
        /// </summary>
        /// <param name="verificationText">验证码字符串</param>
        /// <param name="width">图片宽度</param>
        /// <param name="height">图片长度</param>
        /// <returns>图片</returns>
        public static Bitmap CreateVerificationImage(string verificationText, int width, int height)
        {
            Pen _pen = new Pen(Color.Black);
            Font _font = new Font("Arial", 14, FontStyle.Bold);
            Brush _brush = null;
            Bitmap _bitmap = new Bitmap(width, height);
            Graphics _g = Graphics.FromImage(_bitmap);
            SizeF _totalSizeF = _g.MeasureString(verificationText, _font);
            SizeF _curCharSizeF;
            PointF _startPointF = new PointF((width - _totalSizeF.Width) / 2, (height - _totalSizeF.Height) / 2);
            //随机数产生器
            Random _random = new Random();
            _g.Clear(Color.White);
            for (int i = 0; i < verificationText.Length; i++)
            {
                _brush = new LinearGradientBrush(new Point(0, 0), new Point(1, 1), Color.FromArgb(_random.Next(255), _random.Next(255), _random.Next(255)), Color.FromArgb(_random.Next(255), _random.Next(255), _random.Next(255)));
                _g.DrawString(verificationText[i].ToString(), _font, _brush, _startPointF);
                _curCharSizeF = _g.MeasureString(verificationText[i].ToString(), _font);
                _startPointF.X += _curCharSizeF.Width;
            }
            _g.Dispose();
            return _bitmap;
        }
    }
}




使用方式

 public class HomeController : Controller
    {
        [AllowAnonymous]
        public ActionResult VerificationCode3()
        {
            HttpContext.Response.ContentType = "image/jpeg";
            string verideCode = WebHelper.CreateCode.CreateVerificationText(6);
            Bitmap _img =
                WebHelper.CreateCode.CreateVerificationImage(verideCode, 160, 80);
            
            _img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
            TempData["verideCode"] = verideCode.ToUpper();
           
            return null;
        }


C#随机生成验证码方法

using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using S...
  • Denghejing
  • Denghejing
  • 2016年07月10日 15:40
  • 3758

C# MVC 生成图片验证码

Controller using System; using System.Collections.Generic; using System.Linq; using System.Web; usin...
  • KingCruel
  • KingCruel
  • 2016年06月17日 11:11
  • 2806

C#生成验证码(纯数字)

新建一个验证码生成类,名为ValidateCodeHelper.cs using System; using System.Collections.Generic; using System.Dr...
  • fly043488
  • fly043488
  • 2017年04月01日 10:48
  • 965

C#生成简单验证码

我们平时无论是网站登录还是注册,都会频繁的遇到各式各样的验证码 ,其实生成验证码对于C#来说非常简单。 下面就是我学习生成验证码的简单实例。 封装的辅助类代码,如下: 1 using Syste...
  • CodeSection
  • CodeSection
  • 2017年02月23日 11:11
  • 928

C#-ASP.NET 自动生成验证码

string code = CreateRandomCode(5); TempData["SecurityCode"] = code; return F...
  • wpg_boke
  • wpg_boke
  • 2016年08月13日 22:50
  • 194

C#生成随机验证码例子

C#生成随机验证吗例子:  前端: 1 2 "24%" height="26" align="center" valign="top"> 3 验证...
  • CoderJYF
  • CoderJYF
  • 2017年01月17日 10:25
  • 793

C#生成图片验证码

private void CreateImage(string codes) { try { int i...
  • pp_fzp
  • pp_fzp
  • 2016年03月18日 20:56
  • 1294

C#产生随机验证码的代码

再次申明非本人原创。可以到网上下载ASPNETAJAXWeb.ValidateCode.dll直接使用 using System; using System.Collections.Gen...
  • Denghejing
  • Denghejing
  • 2016年07月10日 15:27
  • 1232

C#采用画图方式生成验证码样式图片

本文是关注如何使用Graphics生成验证码样式,效果如图: 1. 用C#创建一个基于Windows Form的应用程序; 2. 拖一个【pictureBox】到窗体中,双击该控件,在Click...
  • dijkstar
  • dijkstar
  • 2013年12月20日 21:24
  • 1303

C#一款比较美观的验证码

using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System....
  • smartsmile2012
  • smartsmile2012
  • 2014年07月04日 14:30
  • 842
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#生成多颜色的验证码
举报原因:
原因补充:

(最多只允许输入30个字)