GDI+编程---图形绘制概述
2012-07-25 13:47
218 查看
Graphics Device Interface类(GDI+)编程,GDI+是.NET Framework的绘图技术。
Graphics类封装了一个GDI+绘图接口。有3个基本类型的绘图接口:
1.屏幕上的窗口和控件
2.要发送给打印机的页面
3.内存中的位图和图像
Graphics类提供了在这些绘图界面上绘图的功能。我们可以使用它绘制圆弧、曲线、Bezier曲线、椭圆、图像、线条、矩形和文本。
给窗口获得Graphics对象有两种不同的方式。
首先是重写OnPaint()事件,利用事件传入的PaintEventArgs中获取Graphics对象:
protected override void OnPaint(PaintEventArgs e){
Graphics g=e.Graphics;
}
有时,需要直接在窗口中绘图,而无需等待OnPaint()事件。例如,要编写代码,选择窗口中的某些图形对象,或者用鼠标拖动一些对象,就需要直接在窗口中绘图,在窗体上调用CreateGraphics()方法就可以获得一个Graphics对象,这是Form类继承自Control类的另一种方法:
protected void Form1_click(object sender,System.EventArgs e)
{
Graphics g=this.CreateGraphics();
g.Dispose();
}
对象的删除
有几种数据类型对于调用Dispose()是非常重要的,否则一些资源就不能释放。这些类执行IDisposable接口。Graphics是这些类中的一个。
如果是从OnPaint()事件中获得的Graphics对象,而不是创建了该对象,就不应调用Dispose(),但如果调用了CreateGraphics(),就必须调用Dispose().
有一种更简单的方式可以处理需要正确删除的对象,即使用Using结构。在对象超出作用域时,Using结构会自动调用Dispose().
using示例用法:
using(Graphics g=this.CreateGraphics())
{
g.DrawLine(Pens.Black,new Point(0,0),new Point(3,5));
}
上面的,其代码等价于:
Graphics g =this.CreateGraphics();
try
{
g.DrawLine(Pens.Black,new Point(0,0),new Point(3,5);
}
finally
{
if(g!=null)
((IDisposable)g).Dispose();
}
坐标系统
GDI+的坐标系统建立在通过像素中心的假想网络线上,这些网络线从0开始,其左上角的交点是x=0,y=0
从点1,1到点5,1绘制一个像素宽的水平线,如图:
![](http://pic002.cnblogs.com/images/2012/421360/2012072513443947.jpg)
从点1,1到点1,4绘制一个像素高的垂直线,如图:
![](http://pic002.cnblogs.com/images/2012/421360/2012072513455011.jpg)
Graphics类封装了一个GDI+绘图接口。有3个基本类型的绘图接口:
1.屏幕上的窗口和控件
2.要发送给打印机的页面
3.内存中的位图和图像
Graphics类提供了在这些绘图界面上绘图的功能。我们可以使用它绘制圆弧、曲线、Bezier曲线、椭圆、图像、线条、矩形和文本。
给窗口获得Graphics对象有两种不同的方式。
首先是重写OnPaint()事件,利用事件传入的PaintEventArgs中获取Graphics对象:
protected override void OnPaint(PaintEventArgs e){
Graphics g=e.Graphics;
}
有时,需要直接在窗口中绘图,而无需等待OnPaint()事件。例如,要编写代码,选择窗口中的某些图形对象,或者用鼠标拖动一些对象,就需要直接在窗口中绘图,在窗体上调用CreateGraphics()方法就可以获得一个Graphics对象,这是Form类继承自Control类的另一种方法:
protected void Form1_click(object sender,System.EventArgs e)
{
Graphics g=this.CreateGraphics();
g.Dispose();
}
对象的删除
有几种数据类型对于调用Dispose()是非常重要的,否则一些资源就不能释放。这些类执行IDisposable接口。Graphics是这些类中的一个。
如果是从OnPaint()事件中获得的Graphics对象,而不是创建了该对象,就不应调用Dispose(),但如果调用了CreateGraphics(),就必须调用Dispose().
有一种更简单的方式可以处理需要正确删除的对象,即使用Using结构。在对象超出作用域时,Using结构会自动调用Dispose().
using示例用法:
using(Graphics g=this.CreateGraphics())
{
g.DrawLine(Pens.Black,new Point(0,0),new Point(3,5));
}
上面的,其代码等价于:
Graphics g =this.CreateGraphics();
try
{
g.DrawLine(Pens.Black,new Point(0,0),new Point(3,5);
}
finally
{
if(g!=null)
((IDisposable)g).Dispose();
}
坐标系统
GDI+的坐标系统建立在通过像素中心的假想网络线上,这些网络线从0开始,其左上角的交点是x=0,y=0
从点1,1到点5,1绘制一个像素宽的水平线,如图:
![](http://pic002.cnblogs.com/images/2012/421360/2012072513443947.jpg)
从点1,1到点1,4绘制一个像素高的垂直线,如图:
![](http://pic002.cnblogs.com/images/2012/421360/2012072513455011.jpg)
![](http://pic002.cnblogs.com/images/2012/421360/2012072513460459.jpg)
相关文章推荐
- GDI+绘制简单图形
- Symbian编程总结-图形图像篇-使用双缓存进行图形的绘制
- bada 2D游戏编程之一――图形绘制
- GDI+绘制简单的图形
- GDI+绘制图形和画刷填充图形
- Android编程开发之在Canvas中利用Path绘制基本图形(圆形,矩形,椭圆,三角形等)
- GDI+ - 图形编程【初始化工作】
- 图形编程入门之如何创建用于绘制的 Graphics 对象
- Win32 OpenGL编程系列 2D例子 -- 七巧板图形绘制
- Delphi下的GDI+编程[10] 绘制饼形-DrawPie
- [数学]GDI+图形编程常用算法1
- android游戏编程--图形绘制(2)
- 图形编程入门之如何创建用于绘制的 Graphics 对象
- 编程之美 — 让CPU占用率绘制任意图形
- GDI+图形图像编程实例(一)
- C# GDI+与图形编程
- 图形编程入门之如何创建用于绘制的 Graphics 对象
- GDI+与图形编程研究
- Symbian编程总结-图形图像篇-使用双缓存进行图形的绘制
- windows基础编程----第四篇(调用GDI绘制出相关图形)