zoukankan      html  css  js  c++  java
  • C# 生成简单验证码

    网站登录总是会用到验证码,生成验证码对于C#来说很简单。因为有专门封装好的GDI+类可以直接调用使用具体代码如下

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Web;
     5 using System.Web.UI;
     6 using System.Web.UI.WebControls;
     7 using System.Drawing;
     8 
     9 namespace Ajax.验证码
    10 {
    11     public partial class Yanma : System.Web.UI.Page
    12     {
    13         private int CodeNum = 4;
    14         private string codeNum = "";
    15         protected void Page_Load(object sender, EventArgs e)
    16         {
    17             VeriflcationCode();
    18             HuaCode(codeNum);
    19         }
    20 
    21         private void VeriflcationCode()
    22         {
    23             //生成验证码
    24             string AllChar = "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,W,X,Y,Z";
    25             string[] StrChar = AllChar.Split(',');
    26             Random rd = new Random();
    27             string Codes = "";
    28             for (int i = 0; i < CodeNum; i++)
    29             {
    30                 Codes += StrChar[rd.Next(0, 35)];
    31             }
    32             codeNum = Codes;
    33             Session["VerCode"] = Codes; 
    34         }
    35 
    36         private void HuaCode(string Codes)
    37         {
    38             int iwidth = (int)(Codes.Length * 17);//定义画布的宽
    39             System.Drawing.Bitmap images = new System.Drawing.Bitmap(iwidth, 25);//声明一个画布类,初始化图片的宽和高
    40 
    41             Graphics g = Graphics.FromImage(images);
    42             Font f = new Font("Arial", 14);//定义文字类型
    43             Brush b = new System.Drawing.SolidBrush(Color.Black);//文字颜色 黑色
    44             Brush r = new System.Drawing.SolidBrush(Color.FromArgb(166, 8, 8));//文字颜色 
    45             g.Clear(System.Drawing.ColorTranslator.FromHtml("#99C1CB"));//背景色
    46 
    47             char[] ch = Codes.ToCharArray();
    48             for (int i = 0; i < ch.Length; i++)
    49             {
    50                 if (ch[i] >= '0' && ch[i] <= '9')
    51                 {
    52                     //数字用红色显示 
    53                     g.DrawString(ch[i].ToString(), f, r, 3 + (i * 14), 3);//将文字画出 文字、字体类型、字体颜色、字体间距、字体于顶部间距
    54                 }
    55                 else
    56                 {   //字母用黑色显示
    57                     g.DrawString(ch[i].ToString(), f, b, 3 + (i * 14), 3);
    58                 }
    59             }
    60 
    61             //for循环用来生成一些随机的水平线
    62             Pen blackPen = new Pen(Color.Black, 0);
    63             Random rand = new Random();
    64             for (int i = 0; i < 5; i++)
    65             {
    66                 int y = rand.Next(images.Height);
    67                 g.DrawLine(blackPen, 0, y, images.Width, y);
    68             }
    69 
    70 
    71             System.IO.MemoryStream ms = new System.IO.MemoryStream();
    72             images.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    73             //history back 不重复 
    74             Response.Cache.SetNoStore();//这一句         
    75             Response.ClearContent();
    76             Response.ContentType = "image/Jpeg";
    77             Response.BinaryWrite(ms.ToArray());
    78             g.Dispose();
    79             images.Dispose();
    80         }

    效果为:

  • 相关阅读:
    Redis-安装
    Redis-介绍
    Redis 教程(转)
    C# Redis 帮助类
    sublime text3---Emmet:HTML/CSS代码快速编写神器
    Sublime Text3 Package Control和Emmet插件安装方法
    vs2010音频文件压缩 调用lame_enc.dll将WAV格式转换成MP3
    vs学习过程中遇见的各种问题
    vs2010中添加dll文件
    解决angular11打包报错Type 'Event' is missing the following properties from type 'any[]': ...Type 'Event' is not assignable to type 'string'
  • 原文地址:https://www.cnblogs.com/xiao-bei/p/3929065.html
Copyright © 2011-2022 走看看