zoukankan      html  css  js  c++  java
  • 数字验证码

            private void pictureBox1_Click(object sender, EventArgs e)
            {
                //产生随机数
                Random r = new Random();
                //定义一个字符串用于接收产生的随机数字
                string str=null;
                for (int i = 0; i < 5; i++)
                {
                    //将从0-9的数字,随机赋给Str
                    str += r.Next(0, 9);
                }
                //将str赋值给strCode,用于判断输入的验证码是否正确
                strCode = str;
                //定义bmp图像的宽度等于picture的宽度减去5
                int bmpWidth = pictureBox1.Width - 5;
                //定义bmp图像的高度等于picture的宽度减去5
                int bmpHeight = pictureBox1.Height - 5;
                //初始化一个bmp图像并设置好大小
                Bitmap bmp = new Bitmap(bmpWidth,bmpHeight);
                //用GDI重画这个图像
                Graphics g = Graphics.FromImage(bmp);
                
                //在bmp图片中添加数字
                for (int i = 0; i < 5; i++)
                {
                   //设定每个字符的坐标位置 i是第一个字符的坐标,
                    //在第二次循环的时候,第二个字符的横坐标与第一个不能相同,否则会两个字符会重叠
                    //所以在每次循环的时候,对字符的横坐标,都加一定的数值。
                    //第一次 i=0 ,i*30 =0  字符横坐标的位置从0开始
                    //第二次 i=1,i*30=30  字符横坐标的位置从30开始,以次类推
                    Point p = new Point(i * 30, 0);
    
                    //定义一个字符串数组,用来定义画出来的字体的样式
                    string[] strFont = {"宋体","华文新魏","隶书","黑体","微软雅黑","幼园"};
                    //定义一个颜色数组,用来定义画出来的字体的颜色
                    Color[] colorFont = {Color.Blue,Color.Black,Color.Green,Color.Yellow};
                    //开始画字符
                    //第一个参数,要画的字符
                    //第二个参数,字符的字体 初始化字体,并随机从StrFont中产生字体,30为字体大小,FontStyle为字体是样式
                    //第三个参数,字符的颜色 初始new SolidBrush 它表示此画笔的颜色。
                    //第四个参数,字符的位置
                    g.DrawString(str[i].ToString() ,new Font(strFont[r.Next(0,strFont.Length)],30,FontStyle.Bold),new SolidBrush(colorFont[r.Next(0,colorFont.Length)]),p);
                    
                }
    
    
                ///在bmp图片中添加不规的线条
                for (int i = 0; i < 60; i++)
                {
                    //定义画笔的起始位置,从bmp图像的宽度与高度之前随机产生
                    Point p1 = new Point(r.Next(0,bmp.Width),r.Next(0,bmp.Height));
                    //定义画笔的结束位置,从bmp图像的宽度与高度之前随机产生
                    Point p2 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
                    //画直线
                    g.DrawLine(new Pen(Brushes.Red), p1, p2); 
                }
    
    
                ///在bmp图片中添加有颜色的点
                for (int i = 0; i < 200; i++)
                {
                    //宝座像素点的位置,从bmp图像的宽度与高度之前随机产生
                    Point p =new Point(r.Next(0,bmp.Width),r.Next(0,bmp.Height));
    
                    //定义好某个象点的X坐标与Y坐标后,用指定的颜色标记出来
                    bmp.SetPixel(p.X, p.Y, Color.Blue);
                }
    
    
                ///将bmp图像赋与pictureBox
                pictureBox1.Image=bmp;
            }
    
  • 相关阅读:
    和程序员有关的对联
    《kali linux 渗透测试初级教程》免费下载
    PPT嵌入字体的方法
    修改nw.js的exe文件使其请求管理员权限
    nw.js FrameLess Window下的窗口拖拽与窗口大小控制
    nw.js如何处理拖放操作
    nw.js 软件推荐:AxeSlide斧子演示:PPT的另一种可能(转)
    c#使用word、excel、pdf ——转
    ASP.NET MVC
    http 报文
  • 原文地址:https://www.cnblogs.com/hobe6699/p/5173516.html
Copyright © 2011-2022 走看看