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,因为它的跨平台开发.因为是原生代码所以它的页 ...
随机推荐
- hdu 1023 hdu 1131
How Many Trees? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...
- JetBrains IDE 基本快捷键
转载自:https://nextfe.com/jetbrains-ide-shortcuts/ 一个好的手艺人很熟悉他的工具.软件开发者也不例外.所以,在编程的过程中,值得了解一些键盘快捷键,以免因为 ...
- codeforces163D
Large Refrigerator CodeForces - 163D 给定一个长方体的体积V,求出这个长方体的最小表面积. 输入 第一行有一个整数t (1 ≤ t ≤ 500) — 测试数据的组数 ...
- 集合家族——Vector
一.vector简介 Vector 可以实现可增长的对象数组.与数组一样,它包含可以使用整数索引进行访问的组件.不过,Vector 的大小是可以增加或者减小的,以便适应创建 Vector 后进行添加或 ...
- C++11正则表达式初探
C++正则表达式 在此之前都没有了解过C++的正则,不过现在大多数赛事都支持C++11了,因此有必要学习一下,用于快速A签到题. 所在头文件 #include<regex> 正则表达式语法 ...
- LeetCode 最长公共前缀(探索字节跳动)
题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow ...
- legend3---9、项目的日志以及调试信息数据量非常大
legend3---9.项目的日志以及调试信息数据量非常大 一.总结 一句话总结: legend2我开发调试,最近竟然发现日志等的信息有1.5G,数据量实在太大 1.juqery如何找后代? chil ...
- ip效验和ip段的效验
package com.juchen.utils; import javax.servlet.http.HttpServletRequest; /** * ip 相关的工具方法 */ public ...
- sentinel备忘
git https://github.com/alibaba/Sentinel https://github.com/dubbo/dubbo-sentinel-supportdubbo http: ...
- 浅谈WebViewClient与WebChromeClient
简介:WebViewClient被用来传递单纯的加载一个链接时所发生的事件,比如开始加载,结束加载等,它代表这个链接加载时的最普通的和最笼统的事件,WebChromeClient更多的是传递JS对话框 ...