您的位置:首页 > 编程语言

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绘制一个像素宽的水平线,如图:



从点1,1到点1,4绘制一个像素高的垂直线,如图:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: