基于GDI绘图方法研究.docVIP

  • 13
  • 0
  • 约3.83千字
  • 约 10页
  • 2018-08-28 发布于福建
  • 举报
基于GDI绘图方法研究

基于GDI绘图方法研究   摘 要: 介绍GDI+的功能及VB.NET中GDI+绘制基本图形的方法,并以三角形绘制介绍代码编写的思路,详细说明GDI+绘制函数曲线的过程,总结GDI+绘图方法的流程。   关键词: VB.NET;GDI+;函数曲线;绘图方法   中图分类号:TP301 文献标识码:A 文章编号:1671-7597(2011)0810104-02      0 引言   GDI+可以绘制图形、文本,也可以将图形图像作为对象进行处理。GDI+是进行二维向量图形、图像及文字等方面处理的Win32 API,是目前在Windows窗体应用程序中以编程方式显示图形的惟一方法。所有GDI+的功能都包含在System.Drawing、System.Drawing.Image、System.Drawing.Drawing2D和System.Drawing.Text这些命名空间的各个类中。Visual Basic.NET通过这些命名空间所提供的功能进行图形设计和图形处理。   1 GDI+绘制基本图形的方法及流程   1.1 GDI+绘制基本图形的方法   1)画直线:DrawLine方法DrawLine(Pen,x1,y1,x2,y2)或Draw   Line(Pen,p1,p2)   2)画矩形和多边形:画矩形DrawRectangle(Pen,Rectangle)或者DrawRectangle(Pen,x,y,width,height);画多边形DrawPolygon(Pen,Point)Point是一个Point结构数组   3)画圆和椭圆:DrawEllipse(Pen,Rectangle)或者DrawEllipse   (Pen,x,y,width,height)   4)画圆弧:DrawArc(Pen,Rectangle,startAngle,sweepAngle)   5)画扇形:DrawPie(Pen,Rectangle,startAngle,sweepAngle)   6)清屏:Clear(Color)   1.2 GDI+绘制图像的流程及实例图   在此只以图2中绘制三角形为例,编写代码如下:   Dim g2 As Graphics 声明Graphics对象   G2 = PictureBox4.CreateGraphics创建Graphics对象   Dim greenPen As New Pen(Color.Green, 4) 声明画笔   Dim t1 As New Point(25, 45) 定义三角形三个顶点   Dim t2 As New Point(80, 110)   Dim t3 As New Point(110, 50)   Dim Trangle1 As Point() = {t1,t2,t3} 定义三角形三边的数组   g2.DrawPolygon(greenPen, Trangle1)画三角形   2 GDI+绘制函数曲线的方法及流程   在数学中我们接触过一些简单的函数曲线,比如直线:y=ax+b;抛物线:y=ax2+bx+c;正弦曲线:y=sinx;余弦曲线:y=cosx等等。   思考:我们如何在窗口上绘制如图3 所示的抛物线呢?   2.1 分析抛物线函数绘制   当X2-X1趋近于0时,A-B可近似为直线。如果在X的取值范围内,将无数个类似A-B的线段连接起来,就构成了这样一个曲线。我们可以根据这个思路,绘制函数曲线。   如图4所示,在窗口上要建立一个坐标系为XOY,坐标原点为(0,0),在窗口坐标中的坐标设为(a,b),y=f(x)曲线上的任意一点P在建立的坐标系上的坐标为(x,y),它与窗口坐标系上的坐标(x,y)的关系是x=a+x, y=b-y。   因为我们所有的曲线都是在窗口上绘制的,所以,在绘制任意函数曲线前,必须把函数表达式转换为窗口坐标系下的函数表达式。   现在我们将抛物线y=(1/300)x2-100如图5所示,代入x=a+x, y=b-y可得:   x= a + x → x = x- a ,y= b -(1/300)(x- a )2 + 100   2.2 绘制抛物线的步骤   根据上面的分析,我们确定了绘制抛物线的步骤。   1)确定原点坐标(a ,b):a = 1/2(窗口宽度)= 1/2 Width,b = 1/2(窗口高度)= 1/2 Height;   2)确定x取值范围,对于这个抛物线而言,x的取值范围是(0,Width);   3)确定点数即Point结构数组。本例中我们取1000个点:即I= 0 To 1000;   4)确定x表达式:因为x的取值范

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档