GIP画图
世界坐标:相对于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画图的更多相关文章
- Ubuntu 16.10 安装KolourPaint 4画图工具
KolourPaint 4画图工具简单实用,可以绘画.视频处理和图标编辑: • 绘画:绘制图表和“手绘” • 视频处理:编辑截图和照片;应用特效 • 图标编辑:绘画剪贴和标识透明化 1.在Ubuntu ...
- Android开发之画图的实现
Android开发之画图的实现 四天前上完安卓的第一节课,真的是一脸懵逼,尽管熊哥说和java是差不多的,然而这个包和那个包之间的那些转换都是些什么鬼呀!!!但是四天的学习和操作下来,我觉得安卓 ...
- matlab画图函数plot()/set/legend
简单plot()/legend/XY轴范围axis 除了坐标轴信息外还可以添加其它的信息,如所画曲线的信息等:测试代码如下 x=0:pi/20:2*pi; y1=sin(x); y2=cos(x); ...
- 对Raphael画图标的一个jquery简单封装
公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封装一下这个功能,就写了一个简单的插件:jquery ...
- java画图之曲线拖动
目标:在窗体上按下鼠标按键.然后拖动鼠标,在按下和拖动之间绘制曲线 事件机制 事件源对象:窗体 事件监听方法:addMouseListener(MouseListener l);addMouseMot ...
- java画图之初体验
1.实现画图程序所需的API类 JFrame JButton ActionListener 动作事件接口 ActionEvent ...
- 【JavaScript】操作Canvas画图
1.页面添加 Canvas 标签 标签内可以写文字,浏览器不支持Canvas的情况下显示, 2.js获取 Canvas 标签 3.利用js函数画图,[线][图][文字] 源:http://www.li ...
- 用Canvas制作简单的画图工具
今天用Canvas制作了一个画图工具,非常简单,功能也不是很多,主要有背景网格,画线,画圆,画矩形和画圆角矩形,也用到了canvas的一些基本知识,在这里一一列举. 1.线段的绘制: 如何绘制真正的1 ...
- html5之canvas画图基础
HTML5+CSS3的好处是,你可以编写一个页面分别用于不同的平台,只需要设置不同的css样式就可以了,现在基本主流浏览器都支持全新的HTML5和CSS3,因为它的跨平台开发.因为是原生代码所以它的页 ...
随机推荐
- sass,compass学习笔记总结
最近在进行百度前端技术学院的任务,知道自己基础薄弱,可没想到弱到这种地步,同时在安装各种软件的同时遇到了各种坑,查阅了各种资料,一个个解决的时候也发现自己凌乱了.学习总结,在脑海中形成自己的学习系统才 ...
- JQuery动画之滑入滑出动画
1. 滑入动画(类似于商店的卷帘门) $(selector).slideDown(speed, 回调函数); 解释: 此语句实现的功能为, 在XX时间内, 下拉动画, 显现元素. 当 slideDow ...
- 【洛谷2050】 [NOI2012]美食节(费用流)
大家可以先看这道题目再做! SCOI2007修车 传送门 洛谷 Solution 就和上面那道题目一样的套路,但是发现你会获得60~80分的好成绩!!! 考虑优化,因为是SPFA,所以每一次只会走最短 ...
- mitmproxy修改二级代理
第一步 mitmweb --mode upstream:http://114.240.101.242:5672 -s server.py 第二步 def request(self, flow: mit ...
- python获取hive表时间格式最大分区
#获取表的最大分区 import boto3 from datetime import datetime,timedelta def get_max_partition(db_name,table_n ...
- Linux命令(用户管理、组和时间管理)
用户管理 Linux系统是一个多用用户的系统 用户分为三类: 超级用户(root)用户的id是0 伪用户 用户的id是1----499,虽然存在,但不能被登录 ...
- redis 字符串数据(string)
Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下: 语法 redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 127. ...
- HSBToolBox
HSBToolBox.exe Unzip all files to the folder where Hearthbuddy.exeThen just run HSBToolBox.exe [asse ...
- C++ UFT-8和GB2312间的转换
在这个帖子找到的代码 还蛮好用的 https://bbs.csdn.net/topics/391040755 #include <codecvt> #include <locale& ...
- python下载服务器
大佬们,你们还在为传输文件时利用U盘插拔而苦恼吗,还在为设置文件共享而苦恼吗?别苦恼了,教你一秒实现文件的传输. 首先我们都要有python环境,这个肯定有. 下面就是一秒,在你要传的文件的目录下输入 ...