世界坐标:相对于winform窗体来说的,

页面坐标:相对于控件的

设置坐标:相对于显示器

获得Graphics对象一般有两种方式:

1.控件.CreateGraphics();//通过该方式创建后要调用g.Dispose()方法释放资源。

2.在重写OnPaint()方法中通过参数PaintEventArgs e.Graphics;来获得,一般使用为Paint事件中。//通过这种方式一般不需要手动调用Dispose();

什么样类型的对象需要使用完成后Dispose()?
答:Pen,Brush,Font,Image,Ico,FileStream(文件操作),网络操作等。 (在这些类中封装了一些操作系统的资源)//Pens.XXX或Brushes.XXX等不需要,手动创建的才需要。强行释放资源会出错.

新建一个画笔

Graphics 变量 = this.CreateGraphics();//this也可以是控件名称,代表在那个控件上画

新建一个画笔类型

Pen 变量 = new Pen(Color.Black, 1); //Black颜色  1代表画笔的宽度

DashStyle  属性 设置画笔的类型  在这个命名空间  using System.Drawing.Drawing2D;

pen.DashStyle = DashStyle.Dot;//由点构成的线

pen.DashStyle = DashStyle.Dash;//由线段构成的线

新建一个点

Point 变量 = new Point(X,Y);  // X代表x轴 Y代表y轴

新建一种字体变量

Font font = new Font("宋体", 9);

画笔变量.DrawString("湖南工程职业技术学院", this.Font, Brushes.Red, 10, 50);//

DrawXXX() 画各种图形  Pen

FillXXX()  画实心的 Brush

Ellipse  圆

Rectangle  矩形

g.DrawEllipse(Pens.Black, 10, 100, 80, 80);//空心圆

g.DrawRectangle(Pens.Brown,10,200,100,100);//空心 矩形

g.DrawLine(Pens.BlueViolet,20,30,50,80);//画一条线  笔的类型,起始点坐标,终止点坐标

//三个常用的封装

Point p = new Point(10, 280);//对坐标点的封装

Size s = new Size(100,5);//对形状大小的封装   封装一个宽度为100 高度为5

Rectangle re = new Rectangle(p, s);//封装一个矩形区域 p坐标点  s大小

g.FillRectangle(Brushes.Aquamarine, re);//根据矩形区域绘画一个矩形

例:

/// <summary>

/// 画线条

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button1_Click(object sender, EventArgs e)

{

Graphics g = this.CreateGraphics();

Point p = new Point(10, 10);

Point p1 = new Point(10,500);

Pen pen = new Pen(Color.Black, 4);//定义一个黑色 4像素宽的画笔

//pen.DashStyle = DashStyle.Dot;//由点构成的线

pen.DashStyle = DashStyle.Dash;//由线段构成的线

g.DrawLine(pen, p, p1);//画一条线

g.Dispose();//释放资源

}

GIP画图的更多相关文章

  1. Ubuntu 16.10 安装KolourPaint 4画图工具

    KolourPaint 4画图工具简单实用,可以绘画.视频处理和图标编辑: • 绘画:绘制图表和“手绘” • 视频处理:编辑截图和照片;应用特效 • 图标编辑:绘画剪贴和标识透明化 1.在Ubuntu ...

  2. Android开发之画图的实现

    Android开发之画图的实现    四天前上完安卓的第一节课,真的是一脸懵逼,尽管熊哥说和java是差不多的,然而这个包和那个包之间的那些转换都是些什么鬼呀!!!但是四天的学习和操作下来,我觉得安卓 ...

  3. matlab画图函数plot()/set/legend

    简单plot()/legend/XY轴范围axis 除了坐标轴信息外还可以添加其它的信息,如所画曲线的信息等:测试代码如下 x=0:pi/20:2*pi; y1=sin(x); y2=cos(x); ...

  4. 对Raphael画图标的一个jquery简单封装

    公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封装一下这个功能,就写了一个简单的插件:jquery ...

  5. java画图之曲线拖动

    目标:在窗体上按下鼠标按键.然后拖动鼠标,在按下和拖动之间绘制曲线 事件机制 事件源对象:窗体 事件监听方法:addMouseListener(MouseListener l);addMouseMot ...

  6. java画图之初体验

    1.实现画图程序所需的API类 JFrame JButton ActionListener              动作事件接口 ActionEvent                        ...

  7. 【JavaScript】操作Canvas画图

    1.页面添加 Canvas 标签 标签内可以写文字,浏览器不支持Canvas的情况下显示, 2.js获取 Canvas 标签 3.利用js函数画图,[线][图][文字] 源:http://www.li ...

  8. 用Canvas制作简单的画图工具

    今天用Canvas制作了一个画图工具,非常简单,功能也不是很多,主要有背景网格,画线,画圆,画矩形和画圆角矩形,也用到了canvas的一些基本知识,在这里一一列举. 1.线段的绘制: 如何绘制真正的1 ...

  9. html5之canvas画图基础

    HTML5+CSS3的好处是,你可以编写一个页面分别用于不同的平台,只需要设置不同的css样式就可以了,现在基本主流浏览器都支持全新的HTML5和CSS3,因为它的跨平台开发.因为是原生代码所以它的页 ...

随机推荐

  1. [Luogu] 飞扬的小鸟

    https://www.luogu.org/problemnew/show/P1941 Bfs or Dp #include <bits/stdc++.h> using namespace ...

  2. C++11正则表达式初探

    C++正则表达式 在此之前都没有了解过C++的正则,不过现在大多数赛事都支持C++11了,因此有必要学习一下,用于快速A签到题. 所在头文件 #include<regex> 正则表达式语法 ...

  3. IDEA2019.1.3的安装和破解

    上一篇文章我有写过我会尝试安装IDEA(这玩意儿收费啊!),倘若尝试成功以后都会用它编译,很幸运,我安装成功了,所以今天这篇文章我来写安装和破解方法. IDEA界面: ​ 首先我们访问官方网站:htt ...

  4. DbFunctions 作为 LINQ to Entities 查询的一部分使用时,此方法调用规范 CreateDateTime EDM 函数以创建新的 DateTime 对象。

    DbFunctions.CreateDateTime CreateDateTime(year, month,day,hour,minute,second)

  5. Leetcode题目169.求众数(简单)

    题目描述: 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] ...

  6. mybatis中添加时间字符串条件

    <if test="operatorDateStart != null and operatorDateStart !='' " >operator_date > ...

  7. Go语言中new和make的区别

    Go语言中new跟make是内置函数,主要用来创建分配类型内存. new( ) new(T)创建一个没有任何数据的类型为T的实例,并返回该实例的指针: 源码解析 func new func new(T ...

  8. 1.Json的学习--JSON.stringfy()

    1.JSON.parse() JSON.parse() JSON 通常用于与服务端交换数据. 在接收服务器数据时一般是字符串. 我们可以使用 JSON.parse() 方法将数据转换为 JavaScr ...

  9. 使用git send-email发送邮件时报错: Unable to initialize SMTP properly怎么处理?

    答: 配置~/.gitconfig中的smtpserver   需往~/.gitconfig中添加如下内容: [sendemail] smtpserver = <stmp_server_name ...

  10. BrowserUtils

    import android.content.Context; import android.content.Intent; import android.net.Uri; public class ...