使用的 C# winform

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GDI_
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 一根笔 绘制直线的对象 pen 颜色 Brush Brushes SolidBrush color  一张纸(图面) Graphics  两点 Point

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //创建GDI图面对象
            //Graphics g = new Graphics(); 没有定义构造函数
            //创对象
            // 1 在堆中开空间 2 在开辟的空间创对象 3 调用构造函数

            Graphics g = this.CreateGraphics();
            //创建画笔对象  画笔
            //1
            //Pen pen = new Pen(Brushes.Yellow);//Brush 点不出来 看复数
            //2 直接给笔上色
            Pen pen = new Pen(Color.Yellow);//
            //Pen pen = new Pen(new Brush(Color.Yellow));Brush 抽象类报错
            //创建两个点
            Point p1 = , );
            Point p2 = , );

            g.DrawLine(pen, p1, p2);
        }
        ;
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            i++;
            label1.Text = i.ToString();
            //创建GDI对象
            //Graphics g = new Graphics();
            //创对象
            // 1 在堆中开空间 2 在开辟的空间创对象 3 调用构造函数

            Graphics g = this.CreateGraphics();
            //创建画笔对象  画笔
            Pen pen = new Pen(Brushes.Yellow);// 复数形式 返回对象
            //创建两个点
            Point p1 = , );
            Point p2 = , );

            g.DrawLine(pen, p1, p2);

        }

        private void button2_Click(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            Pen pen = new Pen(Brushes.Yellow);
            Size si = , );
            Rectangle rec = , ), si); // 矩形对象
            g.DrawRectangle(pen, rec);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            Pen pen = new Pen(Brushes.Blue);
            Size si = , );
            Rectangle rec = , ), si);
            g.DrawPie(pen, rec, , );//他要什么 我们就给什么
            //Draw 画  在图上绘制 Graphics 

        }

        private void button4_Click(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            Font f = , FontStyle.Underline);
            g.DrawString(, ));
        }
    }
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GDI_验证码
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //点击更换验证码
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            //1 产生随机数
            Random r = new Random();
            string str = null;
            ; i < ; i++)
            {
                , );
                str += rNumber;
            }
            //MessageBox.Show(str);
            // 画一个图片 把文本放到图片里面去
            //创建GDI对象
            Bitmap bmp = , );//创建位图
            //位图 操作系统中 默认的图片类型 其实就是位图(.bmp)
            Graphics g = Graphics.FromImage(bmp); //对象从图片来 就是在图片上绘制

            // 画数字
            ; i < ; i++)
            {
                Point p = , );
                string[] fonts = { "宋体", "微软雅黑", "黑体", "隶书", "仿宋" };
                Color[] colors = { Color.Yellow, Color.Blue, Color.Red, Color.Black, Color.Green };
                g.DrawString(str[i].ToString(), , )], , FontStyle.Bold), , )]), p);
            }

            //画线
            ; i < ; i++)
            {//线必须在验证码图片里面
                Point p1 = , bmp.Width), r.Next(, bmp.Height));
                Point p2 = , bmp.Width), r.Next(, bmp.Height));
                g.DrawLine(new Pen(Brushes.Green), p1, p2);
            }
            //画点
            ; i < ; i++)
            {
                //创建点
                Point p = , bmp.Width), r.Next(, bmp.Height));
                bmp.SetPixel(p.X, p.Y, Color.Black);//再在图上画点
            }

            //将图片镶嵌到picturebox中
            pictureBox1.Image = bmp;
        }
    }
}

GDI+ 绘图教程 验证码的更多相关文章

  1. VB6 GDI+ 入门教程[5] 基础绘图小结

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[5] 基础绘图小结 2009 年 6 月 18 日 4条 ...

  2. VB6 GDI+ 入门教程[1] GDI+介绍

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[1] GDI+介绍 2009 年 6 月 18 日 17 ...

  3. VB6 GDI+ 入门教程[2] GDI+初始化

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[2] GDI+初始化 2009 年 6 月 18 日 7 ...

  4. VB6 GDI+ 入门教程[4] 文字绘制

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[4] 文字绘制 2009 年 6 月 18 日 7条评论 ...

  5. VB6 GDI+ 入门教程[6] 图片

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[6] 图片 2009 年 6 月 19 日 15条评论 ...

  6. 如何用GDI+画个验证码

    如何使用GDI+来制作一个随机的验证码 绘制验证码之前先要引用 using System.Drawing; using System.Drawing.Drawing2D; 首先,先写一个方法来取得验证 ...

  7. MFC GDI绘图基础

    一.关于GDI的基本概念 什么是GDI? Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上. 在Wind ...

  8. VB6 GDI+ 入门教程[3] 笔、刷子、矩形、椭圆绘制

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[3] 笔.刷子.矩形.椭圆绘制 2009 年 6 月 1 ...

  9. VB6 GDI+ 入门教程[7] Graphics 其他内容

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[7] Graphics 其他内容 2009 年 9 月 ...

随机推荐

  1. 部署k8s时容器中ping不通

    192.168.42.120 | UNREACHABLE! => {    "changed": false,     "msg": "Fail ...

  2. java.lang.RuntimeException: org.dom4j.DocumentException: 1 字节的 UTF-8 序列的字节 1 无效。

    向一个XML文件写入出现异常 解决办法:使用记事本打开该XML文件,另存为,编码选择UTF-8 java.lang.RuntimeException: org.dom4j.DocumentExcept ...

  3. loadrunner脚本因为没有token报错

    目录 场景 解决过程 解决方案 总结 场景 用loadrunner11录制脚本,处理后回放,加上检查点,报错找不到检查点对应的内容,去掉检查点,没有报错,但是打开页面没有该操作的痕迹.手动在页面上操作 ...

  4. C++ min函数

    min 是c++标准库头文件中的一个重要的函数.它的功能是一个最小值的函数,比较两个数值的大小,返回他们的之间最小值. #include <algorithm> int a=2; int ...

  5. 如何写出优雅耐看的JavaScript代码

    参考链接:https://segmentfault.com/a/1190000020444918?utm_medium=hao.caibaojian.com&utm_source=hao.ca ...

  6. Mac下安装SecureCRT客户端并激活

    1. 先下载SecureCRT和破解文件 默认下载到了当前用户的”下载”目录中 2. 在”Finder”中 打开 “scrt-7.3.0-657.osx_x64.dmg” 并将 SecureCRT复制 ...

  7. xtrabackup备份失败(error writing file 'UNOPENED')

    xtrabackup备份失败 解决了,是因为limit open files值设置太小了 (3)修改资源限制参数 vi /etc/security/limits.conf nproc:用户创建进程数限 ...

  8. Linux:shift 命令可以将参数依次向左移动一个位置

    在脚本中,命令行参数可以依据其在命令行中的位置来访问.第一个参数是 $1 ,第二个参数 是 $2 ,以此类推. 下面的语句可以显示出前3个命令行参数: echo $1 $2 $3 更为常见的处理方式是 ...

  9. jQuery+php+ajax实现无刷新上传文件功能

    jQuery+php+ajax实现无刷新上传文件功能,还带有上传进度条动画效果,支持图片.视频等大文件上传. js代码 <script type='text/javascript' src='j ...

  10. .Net高级工程师面试题

    ----------高级开发工程师岗位职责: 1.完成平台系统新功能模块开发,维护现有产品,独立地设计.开发.实现和测试关键系统: 2.负责公司项目核心代码的编写: 3.根据产品需求进行业务功能的开发 ...