使用GDI绘制验证码

看着教学视频学着做了一个验证码


首先建立一个C# windows窗体应用程序

然后在窗体中添加一个PictureBox和Button控件

接着给Button按钮注册一个单机事件,开始写代码


    void IdentifyingCode()
    {
        //创建一个随机数对象
        Random r = new Random();
        string str = null;
        //随机生成五个0~9的随机数,并保存在字符串str中
        for (int i = 0; i < 5; i++)
        {
            int rNumber = r.Next(0, 10);
            str = str + rNumber;
        }
        //创建位图对象,设置图片的宽度和高度,Bitmap继承了Image
        Bitmap bmp = new Bitmap(110, 30);
        //创建GDI对象,FromImage参数需要的是Image对象,Bitmap继承了Image,所以可以用Bitmap对象做参数
        Graphics g = Graphics.FromImage(bmp);
        //指定验证码的随机字体
        string[] fonts = { "微软雅黑", "宋体", "黑体", "楷体", "仿宋" };
        //指定验证码的随机颜色
        Color[] colors = { Color.Black, Color.Red, Color.Blue, Color.Purple, Color.HotPink };
        //将产生的字符串画到图片上去
        for (int i = 0; i < 5; i++)
        {
            //创建点对象,表示随机数的位置
            Point point = new Point(i * 20, r.Next(0, 10));
            //参数1是要画的字符串,
            //参数2是字体对象, 
            //参数3是字体颜色,创建一个单色画笔对象,其构造函数参数可以是Color对象, 
            //参数4是点对象,不能随机给,防止重叠
            g.DrawString(str[i].ToString(), new Font(fonts[r.Next(0, 5)], r.Next(15, 19),
                FontStyle.Bold), new SolidBrush(colors[r.Next(0, 5)]), point);
        }
        //在图片中画直线
        for (int i = 0; i < 20; i++)
        {
            //创建两个点对象,来确定一条直线
            Point p1 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
            Point p2 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
            g.DrawLine(new Pen(Brushes.Green), p1, p2);
        }
        //在图片中加上一些像素点
        for (int i = 0; i < 300; i++)
        {
            Point p = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
            bmp.SetPixel(p.X, p.Y, Color.Black);
        }
        //将图片镶嵌到pictureBox中
        pictureBox1.Image = bmp;
    }



效果如图:






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值