protected void Page_Load(object sender, EventArgs e)
        {
            // 创建一个包含随机内容的验证码文本
            System.Random rand = new Random();
            int len = rand.Next(4, 6);
            char[] chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
            System.Text.StringBuilder myStr = new System.Text.StringBuilder();
            for (int iCount = 0; iCount < len; iCount++)
            {
                myStr.Append(chars[rand.Next(chars.Length)]);
            }

string text = myStr.ToString();
            // 保存验证码到 session 中以便其他模块使用
            this.Session["checkcode"] = text;

Size ImageSize = Size.Empty;
            Font myFont = new Font("MS Sans Serif", 20);

// 计算验证码图片大小
            using (Bitmap bmp = new Bitmap(10, 10))
            {
                using (Graphics g = Graphics.FromImage(bmp))
                {
                    SizeF size = g.MeasureString(text, myFont, 10000);
                    ImageSize.Width = (int)size.Width + 8;
                    ImageSize.Height = (int)size.Height + 8;
                }
            }

// 创建验证码图片
            using (Bitmap bmp = new Bitmap(ImageSize.Width, ImageSize.Height))
            {
                // 绘制验证码文本
                using (Graphics g = Graphics.FromImage(bmp))
                {
                    g.Clear(Color.White);
                    using (StringFormat f = new StringFormat())
                    {
                        f.Alignment = StringAlignment.Near;
                        f.LineAlignment = StringAlignment.Center;
                        f.FormatFlags = StringFormatFlags.NoWrap;
                        g.DrawString(
                            text,
                            myFont,
                            Brushes.Black,
                            new RectangleF(
                            0,
                            0,
                            ImageSize.Width,
                            ImageSize.Height),
                            f);
                    }//using
                }//using

// 制造噪声 杂点面积占图片面积的 30%
                int num = ImageSize.Width * ImageSize.Height * 30 / 100;

for (int iCount = 0; iCount < num; iCount++)
                {
                    // 在随机的位置使用随机的颜色设置图片的像素
                    int x = rand.Next(ImageSize.Width);
                    int y = rand.Next(ImageSize.Height);
                    int r = rand.Next(255);
                    int g = rand.Next(255);
                    int b = rand.Next(255);
                    Color c = Color.FromArgb(r, g, b);
                    bmp.SetPixel(x, y, c);
                }//for                // 输出图片
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                this.Response.ContentType = "image/png";
                ms.WriteTo(this.Response.OutputStream);
                ms.Close();

}//using            
              myFont.Dispose();

}//private void Page_Load(object sender, System.EventArgs e)

//别忘了 Systm.Drawing;

转载于:https://www.cnblogs.com/22331218/archive/2008/05/26/1207660.html

[.net]c#登陆实现验证码-图形编程相关推荐

  1. 【5分钟教你】3种实现验证码功能-数字短信验证码-图形验证码-滑动验证码

    摘要:我们在做一些后台系统的登录验证的时候.难免会用到验证码功能,来辅助进行验证,提高安全性,在我们日常生活中,验证方式无处不在,最多的是短信验证码的方式,通过点击发送验证码,然后手机接收短信,填写验 ...

  2. VS2017下安装fltk库——C++程序设计原理与实践图形编程指南

    VS2017下安装fltk库--C++程序设计原理与实践图形编程指南 前言 最近,我在学习<C++程序设计原理与实践>(原书第一版)遇到了安装图形库的问题,我花了两天时间,通过各种途径查找 ...

  3. 《JavaScript高效图形编程(修订版)》——6.2 位图、矢量图,或两者兼而有之?...

    本节书摘来自异步社区<JavaScript高效图形编程(修订版)>一书中的第6章,第6.2节,作者:[美]Raffaele Cecco著,更多章节内容可以访问云栖社区"异步社区& ...

  4. 《JavaScript高效图形编程(修订版)》——6.10 用画布sprites取代DHTMLsprite

    本节书摘来自异步社区<JavaScript高效图形编程(修订版)>一书中的第6章,第6.10节,作者:[美]Raffaele Cecco著,更多章节内容可以访问云栖社区"异步社区 ...

  5. 用Xlib库进行基本图形编程

    用Xlib库进行基本图形编程 用Xlib库进行基本图形编程 目录 1.前言 2.X Window系统的客户服务器模式 3.GUI编程-同步化的编程模型 4.基本的Xlib概念         1.X ...

  6. 《JavaScript高效图形编程(修订版)》——第2章 DHTML基础 2.1创建DHTML sprite

    本节书摘来自异步社区<JavaScript高效图形编程(修订版)>一书中的第2章,第2.1节,作者:[美]Raffaele Cecco著,更多章节内容可以访问云栖社区"异步社区& ...

  7. 现代3D图形编程学习-关于本书(译)

    本书系列 现代3D图形编程学习 关于这本书 三维图像处理硬件很快成为了必不可少的组件.很多操作系统能够直接使用三维图像硬件,有些甚至要求需要有3D渲染能力的硬件.同时对于日益增加的手机系统,3D图像硬 ...

  8. c 语言绘图函数,c语言图形编程(三、绘图函数-)(C language graphics programming (three, drawing function -)).doc...

    c语言图形编程(三.绘图函数-)(C language graphics programming (three, drawing function -)).doc c语言图形编程(三.绘图函数-01) ...

  9. c语言编程基础课件,第7章_C语言图形编程基础课件

    第7章_C语言图形编程基础课件 狭义的组织变革是指组织根据外部环境的变化和内部情况的变化及时地改变自己的内在组织结构,以适应客观发展的需要. 狭义的组织变革是指组织根据外部环境的变化和内部情况的变化及 ...

最新文章

  1. 旋转遍历矩阵 Spiral Matrix
  2. 学科网站建设的尝试与思考
  3. ABAP 动态 SQL
  4. 权限管理-SpringSecurity介绍
  5. Java高并发之锁优化
  6. RAID原理分析总结-运维工作记录
  7. 转行算法,90%的人还没开始就错在了这1步
  8. MySQL之 分库分表
  9. 微信小程序微商城(四):动态API实现商品详情页(上)
  10. 中国城市供水统计年鉴
  11. GAN(生成对抗网络)的系统全面介绍(醍醐灌顶)
  12. 电子发票对报销类saas的影响
  13. 计算机电缆对绞外径怎样算,电线电缆外径计算方法
  14. 剧院在线选座票务系统
  15. gradient设置上下渐变_CSS3 线性渐变(linear-gradient)
  16. 花旗将老虎证券目标价上调365%、将富途控股目标价上调106%
  17. 生日礼物(winter camp F)
  18. 中级微观经济学:Chap 3 偏好
  19. unity Assetstore 和unityhub下载的东西在哪里
  20. stc1t单片机C语言延时,STC12C5A60S2延时的问题

热门文章

  1. 疫情政务问答助手算法冠军开源
  2. 中文文本纠错算法实现
  3. python vector变量_用Python实现因子分析
  4. group by 按什么区别_失业补助金和失业保险金有什么区别,按什么标准领?不知道亏大了...
  5. python报数组越界_【问题汇总】列表数组越界的问题
  6. 用NVAPI获取GPU信息
  7. [转载]Qt之自定义界面(二)添加最小化、关闭按钮、添加背景_vortex_新浪博客...
  8. aspose.cell for java 去水印_【Java编程基本功】(十)输出杨辉三角,输出*号,数组移动...
  9. 现代信号处理 张贤达_清华信号处理著名学者张贤达去世,享年74岁
  10. nginx基本配置与参数说明-【转】