zoukankan      html  css  js  c++  java
  • 图形码验证

    目前基本上所有的网站登陆的时候都有的图形的验证,添入用户名,密码,和图片里的字母才能登陆,我以前一直想做一个,由于种种原因一直拖到今天下午!
    其实也不是很复杂就是用GDI+生成一个随机的字符串的图片,然后将它显示出来,说太空泛了,下面是生成随即数字图片的代码
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Drawing.Imaging;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;

    namespace webimage
    {
     /// <summary>
     /// WebForm1 的摘要说明。
     /// </summary>
     public class WebForm1 : System.Web.UI.Page
     {

      private void Page_Load(object sender, System.EventArgs e)
      {
       // 在此处放置用户代码以初始化页面
       if(!Page.IsPostBack)
       {
        showimg();
       }
      }
      private void showimg()
      {
       this.randomnumber();
       this.drawimage(Session["valdata"].ToString());
      }

      private void randomnumber()
      {
       Random rd = new Random();
       string result = "";
       for(int i = 0 ;i<6;i++)
       {
            result+=rd.Next(10).ToString();
       }
       Session["valdata"]=result;
      }

      private void drawimage(string mess)
      {
        //创建一个Bitmap对象
       Bitmap bit = new Bitmap(100,30);
       //有Bitmap创建一个Graphics对象
       Graphics g = Graphics.FromImage(bit);
       Font ft = new Font("Impact",15);
       //填写内容
       g.DrawString(mess,ft,new SolidBrush(Color.Yellow),new Point(15,2));
       //划一个方框
       g.DrawLine(Pens.WhiteSmoke,2,2,98,2);//-
       g.DrawLine(Pens.White,2,2,2,28);//|
       g.DrawLine(Pens.WhiteSmoke,98,2,98,28);
       g.DrawLine(Pens.White,2,28,98,28);
       //输出并释放
       bit.Save(Response.OutputStream,ImageFormat.Gif);
       bit.Dispose();
       g.Dispose();
       Response.End();

      }
      #region Web 窗体设计器生成的代码
      override protected void OnInit(EventArgs e)
      {
       //
       // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
       //
       InitializeComponent();
       base.OnInit(e);
      }
      
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {
       this.Load += new System.EventHandler(this.Page_Load);
      }
      #endregion
     }
    }
    这就生成了一张随机生成六位数字的图象,这我看看资料一会就做出来了,下面的东西却困惑了我半天
    我在该页面上添加了个Button控件,想着点击一次从新生成一张图片,可是网页打开后只有随机图片却没有按钮,我还以为我放错页面了,回来一看,没错,为什么按钮不能正确显示呢?我没有找到相关的东西,但是我认为是这样的,图片输出的时候用bit.Save(Response.OutputStream,ImageFormat.Gif); 是内存流把按钮控件的信息给冲掉了吧.不去想了,这样我想在另外一页引用它,我看到网上有篇文章使用Image控件然后把ImageUrl指向那一页就可以了!我照着做的,没有问题!

    下面的连接是我上传的代码(VS03)
    https://files.cnblogs.com/interboy/webimage.rar

  • 相关阅读:
    nginx Server names
    ES6--变量的声明及解构赋值
    Android ListView and Tips.
    Eclipse自己定义keystore
    POJ 1129 Channel Allocation(DFS)
    机器学习笔记十三:Ensemble思想(上)
    设计模式——享元模式具体解释
    老猪带你玩转自定义控件三——sai大神带我实现ios 8 时间滚轮控件
    老猪带你玩转android自定义控件二——自定义索引栏listview
    android动手写控件系列——老猪叫你写相机
  • 原文地址:https://www.cnblogs.com/interboy/p/467040.html
Copyright © 2011-2022 走看看