GDI+:Graphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在C#.NET中,使用GDI+处理二维(2D)的图形和图像,使用DirectX处理三维(3D)的图形图像,图形图像处理用到的主要命名空间是System . Drawing:提供了对GDI+基本图形功能的访问,主要有Graphics类、Bitmap类、从Brush类继承的类、Font类、Icon类、Image类、Pen类、Color类等.
大概了解了什么是GDI+后,我们来看一下绘图要用到的主要工具,要画图,肯定要画板吧,在C#中画板可以通过Graphics这个类来创建,有了画板,总得弄个笔什么之类的吧,不然怎么画呀,难不成我们用手指画.笔又可以分好多种类,比如铅笔,画刷等.它们的区别主要是铅笔可以用来画线条,而画刷呢,嘿嘿,自己考虑下.在c#中我们可以用Pen,Brush类来实现类似功能.颜料则自然是用Color类了.
有了工具,我们就可以开始动手了!(所需命名空间:using System.Drawing;)
实现效果:在空白窗体中画基本图形
首先准备一个画板:
创建一个画板主要有3种方式:
A: 在窗体或控件的Paint事件中直接引用Graphics对象 
B: 利用窗体或某个控件的CreateGraphics方法
C: 从继承自图像的任何对象创建Graphics对象
这次我们就先以A为例说明问题:

复制代码代码如下:
private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics; //创建画板,这里的画板是由Form提供的.
        }

然后,我们要只笔:

复制代码代码如下:
private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics; //创建画板,这里的画板是由Form提供的.
            Pen p = new Pen(Color.Blue, 2);//定义了一个蓝色,宽度为的画笔
        }

接下来我们就可以来画画了.

复制代码代码如下:
private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics; //创建画板,这里的画板是由Form提供的.
            Pen p = new Pen(Color.Blue, 2);//定义了一个蓝色,宽度为的画笔
            g.DrawLine(p, 10, 10, 100, 100);//在画板上画直线,起始坐标为(10,10),终点坐标为(100,100)
            g.DrawRectangle(p, 10, 10, 100, 100);//在画板上画矩形,起始坐标为(10,10),宽为,高为
            g.DrawEllipse(p, 10, 10, 100, 100);//在画板上画椭圆,起始坐标为(10,10),外接矩形的宽为,高为
        }

效果图如下所示:

最新文章

  1. java反射 之 反射基础
  2. [WPF系列]-Layout
  3. Linux静默安装weblogic12(fmw_12.1.3.0.0_wls.jar)
  4. Cacti客户端SNMP的安装和配置
  5. 百度BAE环境下WordPress搭建过程
  6. Vagrant使用笔记
  7. 最近使用Qt遇到的一些小问题解决办法总结
  8. pnd_4
  9. reset Cisco 2960 password
  10. java中的线程中断
  11. vue 自适应 Responsive 设计
  12. VMware导入OVF时报错(未能部署OVF包用户取消了任务的解决办法)
  13. vue-cli打包到部署到nginx服务器
  14. Android--------WebView+H5开发仿美团 预加载,加载失败和重新加载
  15. 【MATLAB】评价二值分割结果的函数
  16. dbt macro 说明
  17. Week6&7——第一次项目冲刺(Alpha版本)
  18. YII 用gii生成modules模块下的mvc
  19. Socket网络编程 详细过程(转)
  20. PCB各层介绍及AD软件画PCB时的规则

热门文章

  1. python之对象基础
  2. Python 数据的输入
  3. day09-Python运维开发基础(函数收集参数、命名关键字参数与返回值、函数名的特殊使用及 全局/局部变量详解)
  4. for 循环遍历数据,根据不同的条件判断动态渲染页面!
  5. redis api-String
  6. 如何确定Redis集群中各个节点的主从关系
  7. C++ 标准模板库STL 队列 queue 使用方法与应用介绍
  8. PHP几个快速读取大文件例子
  9. Jquery实现横向tab切换
  10. ls查看所有文件