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         }

    效果为:

  • 相关阅读:
    HDU 1358 Period (KMP)
    POJ 1042 Gone Fishing
    Csharp,Javascript 获取显示器的大小的几种方式
    css text 自动换行的实现方法 Internet Explorer,Firefox,Opera,Safar
    Dynamic Fonts动态设置字体大小存入Cookie
    CSS Image Rollovers翻转效果Image Sprites图片精灵
    CSS three column layout
    css 自定义字体 Internet Explorer,Firefox,Opera,Safari
    颜色选择器 Color Picker,Internet Explorer,Firefox,Opera,Safar
    CSS TextShadow in Safari, Opera, Firefox and more
  • 原文地址:https://www.cnblogs.com/xiao-bei/p/3929065.html
Copyright © 2011-2022 走看看