




免费预览已结束,剩余33页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,本章要点:,画布对象及其应用TShape组件的属性、事件和方法TImage组件的属性、事件和方法Paintbox组件的属性、事件和方法使用鼠标事件的绘图,第9章图像图形应用编程,9.1图形应用编程,本章主要是讲解图形图像对象的概念以及如何在程序运行时绘制图形图像等内容,主要是通过一些例子来讲解Delphi7.0对图形图像强大的处理功能。在Delphi7.0中,专门定义了一组对象和部件用以绘制图形,完成一些简单的图像功能。利用这些对象、部件的方法,可以方便地绘制各种常用图形;通过设置它们的属性,得到不同风格的图形。另外,通过鼠标事件的定义,可以方便地设计图形绘制程序。,9.1.1画布对象属性,在图形应用编程中,最常用到的是canvas类,就是常说的画布。它可以将某些组件的表面作为一张画布,允许编程者利用有关的命令在其上任意地作图。很多组件都支持画布这个属性,同时画布本身又是一个对象,它也有自己的属性,但是这些属性必须要在程序执行时才可以来进行设置。常用的属性有以下几个。(1)图形像素数组(PixArray)属性PixArray属性确定用于像素颜色的读取和像素颜色的设置。(2)画笔(Pen)属性Pen属性确定画布用做画线及轮廓线的画笔。,9.1.1画布对象属性(1),(3)画刷(Brush)属性Brush属性确定画布用于填充图像及背景色的颜色及图案。(4)字体(Font)属性Font属性确定画布的字体。,1.像素像素是构成图形的最基本的单位,画布上每一个点都有对应的像素,用来代表构成一个图形的某一点的颜色。像素的处理一般包括像素颜色的读取和像素颜色的设置。最常用的是利用画布的Pixels属性,来绘制函数曲线。【例9-1】用Pixels属性来画Y=X的函数曲线。运行后的界面如图9-1所示。图9-1用像素来画图主要的功能如下:单击显示按钮,在屏幕上就可以画出Y=X的函数图。主要的程序代码如下:,图9-1用像素来画图,9.1.1画布对象属性(2),procedureTForm1.Button1Click(Sender:TObject);VARxt,yt,t:integer;/xt,yt是用来决定像素的位置,t用来控制循环次数。x,y:real;/x,y是用来取得屏幕的中心beginx:=form1.ClientWidth/2;/ClientWidth属性指的是不包括标题栏在内的宽度。y:=form1.ClientHeight/2;/ClientHeight属性指的是不包括标题栏在内的高度。fort:=-10000to10000dobeginxt:=round(t/100+x);t之所以要除以100是因为要让像素的显示紧密点没有断断续续的感觉,加上x是因为原来的中心在(0,0)的地方,也就是画布的左上角,而现在是要移到(x,y)的地方,将坐标原点进行了移动。yt:=round(-t/100+y);canvas.Pixelsxt,yt:=clblue;/画布的像素颜色为蓝色。end;end;,9.1.1画布对象属性(3),2.画笔画布中的画笔属性是用来控制用户画一条线时的线条形状。画一条线其实就是改变两点间的像素颜色。画笔本身又包含了四个可以设置的属性:颜色(Color)、宽度(Width)、风格(Style)和显示模式(Mode)。,(1)颜色属性(Color)在了解颜色属性前,先来了解一下Windows的颜色系统。以前可能已经听说了一个颜色是多少位的,这是表示所能表达的颜色数多少的指标,是什么意思呢?比如1位的颜色则表示2的一次方,即黑或白两种颜色,这种图片很少见。8位的颜色则表示最多可以有28=256种颜色,表明一张图片中最多可以有256种颜色。24位的图片可以包含16M位的颜色。比如使窗体的背景色为白色则可以用:Form1.Color:=RGB(255,255,255);当然你也可以用数值法来直接表达,如何写呢?在Delphi7.0中是在十六进制数前面加$符号。因为Windows98中的颜色系统是32位的,所以头8位不用,用0来表示。红色可以写成:Form1.Color:=$00FF0000;注意这里是十六进制数。后6位每两位代表一个分量(00-FF),头两位不用。,9.1.1画布对象属性(4),接下来了解画笔的颜色属性,它的缺省值为黑色。如果要将画笔的颜色定义为绿色,那么可以用以下的代码:canvas.pen.color:=clgreen;或者是:canvas.pen.color:=$0000ff00;,(2)风格属性(Style)风格属性是用来设置画笔所画的线的类型,默认值为psSolid(实线),详见表9-2。详见本教程P152页。属性值说明PsClear没有线条PsSolid实线PsDash虚线PsDot圆点PsDashDot点划线PsDashDotDot双点划线设置画笔的类型可通过如下语句实现:canvas.Pen.Style:=;例如:canvas.Pen.Style:=psDashDot;就设置了画笔的风格类型为点划线。(3)显示模式属性(Mode)显示模式属性确定画笔是如何画线的,它的取值有以下几种,详见表9-3。详见本教程P15页。为了便于表达,可以用三个字母来表示颜色:P(画笔的颜色),B(画刷的颜色),A(背景中已经存在的颜色)。,9.1.1画布对象属性(5),【例9-2】画两个方形,并且两个方形之间有一个交集,如图9-2所示。,图9-2pmCopy属性,主要的代码如下:procedureTForm1.Button1Click(Sender:TObject);beginCanvas.Pen.Width:=3;/边框宽度3Canvas.Pen.Color:=clRed;/画笔颜色:红canvas.Brush.color:=clYellow;/填充色:黄Canvas.Pen.Mode:=pmCopy;/系统默认的模式,可写可不写canvas.Rectangle(10,10,300,300);/画一个矩形,左上角的坐标是(10,10),右下角的坐标为(300,300)canvas.Rectangle(50,50,340,340);/画一个矩形,左上角的坐标是(50,50),右下角的坐标为(340,340)end;当把Canvas.Pen.Mode:=pmCopy;改为Canvas.Pen.Mode:=pmblack;它的显示效果如图9-3所示。,9.1.1画布对象属性(),如果把Canvas.Pen.Mode:=pmCopy;改为Canvas.Pen.Mode:=pmwhite;那么图9-3就变成了白色的了。如果把Canvas.Pen.Mode:=pmCopy;改为Canvas.Pen.Mode:=pmnot,当第一次单击显示按钮的时候,则显示的结果如图9-4所示。第二次单击显示按钮的时候,显示结果如图9-5所示。记住pmNot是对背景色求反的一种操作。,第一次按按钮A.画第一个方形由于背景色是灰色的RGB(191,191,191),所以他的反色为RGB(64,64,64)是一种浅黑色。,9.1.1画布对象属性(),B.画第二个方形在没有图像交叉的部分与画第一个方形没什么两样,背景画图处还是灰色的RGB(191,191,191),所以画出来的还是淡黑色的。,第二次按按钮根据前面讲的外面黑色的部分被反成灰色,而中间的灰色被求了两次反,还是灰色。如图9-5所示。简单地举以上几个例子,其他的属性值自己去尝试一下,你可以看到许多意想不到的效果。(4)宽度属性(Width)表示画笔的粗细程度,单位是像素,默认值为1,表示为一个像素。设置方式为:canvas.Pen.Width:=;例如:canvas.Pen.Width:=5;就设置了画笔的宽度为5个像素。,3.画刷(Brush)画刷(Brush)属性是用来设置图形内部区域的填充方式。(1)颜色(Color)属性颜色属性是来设置画刷的填充区域的颜色,默认情况下是白色。,9.1.1画布对象属性(),设置方法为canvas.brush.color:=。例如canvas.brush.color:=clred;就可以将画刷的颜色设置为红色.常见的颜色值参照表9-1。详见本教程P155页。,(2)风格(Style)属性风格属性是用来确定图形的填充方式,它的取值见表9-4。设置方法为:canvas.brush.style:;例如:canvas.brush.style:bsCross;就设置了画刷的线条的类型是十字线。(3)位图(Bitmap)属性位图属性用来设置一个存放图形数据的对象,可以在程序运行阶段动态地创建或者删除,常用的命令有:Bitmap.create/创建一个位图对象。Bitmap.free/释放位图对象。Bitmap.loadfromfile(文件路径)/通过文件路径调入位图,装载在位图对象中。Bitmap.Draw/在指定的地点按原图的大小显示图形或图像。,9.1.1画布对象属性(),【例9-3】位图的创建和释放,主界面如图9-6所示。,程序代码如下:procedureTForm1.Button1Click(Sender:TObject);varbitmap1:tbitmap;/定义位图变量beginbitmap1:=Tbitmap.Create;/创建位图bitmap1bitmap1.LoadFromFile(d:hand.bmp);/装入图像文件form1.Canvas.Draw(10,20,bitmap1);/在坐标(10,20)的地方显示图形。bitmap1.Free;/释放位图end;4.作图区域作图区域Rect是Trect属性中的对象,同时它也是一个函数。它的作用就是定义一个矩形区域对象。Rect对象用两个Tpoint类型指明区域范围或者用四个整型变量定义区域范围。,图9-6位图操作,9.1.1画布对象属性(1),它的调用如下:functionRect(ALeft,ATop,ARight,ABottom:Integer):TRect;overload;functionRect(constATopLeft,ABottomRight:TPoint):TRect;overload;Rect常用的方法有:Rect(x1,y1,x2,y2)/定义Rect区域范围Fillrect/用填充色填充Rect区域FloodFill/用填充色填充Rect之外的区域TextRect/在Rect对象中显示文本StretchDraw/把Bitmap填充到Rect【例9-4】Rect对象的方法和属性运行后界面如图9-7所示。(主要代码见本教程P157页),图9-7Rect对象操作,9.1.2字体(1),1.Height字高先来看一个程序界面,如图9-8所示。主要的代码如下:procedureTForm1.Button1Click(Sender:TObject);beginCanvas.Font.Height:=-18;Canvas.TextOut(20,30,我的HEIGHT为-18);Canvas.Font.Height:=18;Canvas.TextOut(40,60,我的HEIGHT为18);end;2.Size字号字号对于你来说肯定不会陌生的,在任何字编辑软件中都会使用它。它的设置一般为canvas.font.size=;如canvas.Font.Size:=10;3.Name名称属性这个属性中包含了字体的名称:比如宋体、仿宋、楷体_gb2312等字体的名字。,字体本身也有很多的属性,下面进行简单的介绍。,图9-8字体Height属性,9.1.2字体(2),4.Style属性字体还有一个Style的属性,这个属性表示字体是什么类型的。比如:fsBold(黑体),fsItalic(斜体),fsUnderline(下划线),fsStrikeOut(中划线)。它的设置一般为:Canvas.Font.Style:=;如:Canvas.Font.Style:=fsBold;注意要用,9.1.3画布对象的方法,1.Moveto方法作用是将画笔移到指定的位置。画笔的当前位置在PenPos属性中。方法为:procedureMoveTo(X,Y:Integer);2.Lineto方法从当前位置画一条线至(X,Y)所指定的位置,并把笔的位置移至(X,Y)。方法为:procedureLineTo(X,Y:Integer);,9.1.3画布对象的方法(1),3.画折线的方法(Polyline方法)调用PolyLine方法,把提供的多个点依次连接起来,画一系列的直线,其语法格式为:Canvas.PolyLine(Point(x1,y1),Point(x2,y2),Point(x3,y3),);4.画矩形的方法(Rectangle方法)Rectangle方法是在画布上用当前画刷绘制矩形,其语法格式为:Canvas.Rectangle(X1,Y1,X2,Y2);其中(x1,y1)是矩形的左上角,(x2,y2)是矩形的右下角。5.画圆角矩形的方法(Roundrect)Roundrect方法是用来画圆角矩形的,其语法格式为:Canvas.RoundRect(X1,Y1,X2,Y2,X3,Y3);其中(X1,Y1)为矩形的左上角,(X2,Y2)为右下角。其中X3,Y3为圆角的长短半径。6.画圆或画椭圆的方法(Ellipse方法)Ellips方法在画布指定的矩形边界上画一个椭圆,其语法格式为:Canvas.Ellipse(X1,Y1,X2,Y2);其中,(X1,Y1)是矩形左上角的像素坐标,X2,Y2是矩形右下角的象素坐标。如果矩形形成一个区域,将出现一个椭圆。如果这个区域是个正方形的话,则为圆。7.画弧线曲线的方法(Arc方法)Arc方法是用来画椭圆弧线曲线的,其语法格式为:,9.1.3画布对象的方法(2),Canvas.Arc(X1,Y1,X2,Y2,X3,Y3,X4,Y4);其中(X1,Y1)、(X2,Y2)定义矩形,圆弧以(X3,Y3)为起点,逆时针到(X4,Y4)点结束。8.画多边形方法(Polygon方法)Polygon方法是用于画由一系列点定义的多边形,其语法格式为:Canvas.Polygon(Point(x1,y1),Point(x2,y2),Point(x3,y3),);其中(Xi,Yi)为多边形的顶点。它跟Polyline方法的区别在于它能自动封闭图形。9.画饼图的方法(Pie方法)Pie方法是用来画饼图,其语法格式为:Canvas.Pie(X1,Y1,X2,Y2,X3,Y3,X4,Y4);Pie方法画由(X1,Y1)及(X2,Y2)确定的椭圆,从椭圆的中心经(X3,Y3)到椭圆的中心经(X4,Y4)的饼图。10.画帽图的方法(Chord方法)Chord方法是用来画帽图的,其语法格式为:Canvas.Chord(X1,Y1,X2,Y2,X3,Y3,X4,Y4);Chord方法连接椭圆上的两点,椭圆由(X1,Y1),(X2,Y3)两点所确定的矩形决定,(X3,Y3)是始点,(X4,Y4)是终点。,9.1.3画布对象的方法(3),【例9-5】画各种曲线的程序,如图9-9所示。,图9-9各种曲线,主要的程序代码如下:procedureTForm1.FormPaint(Sender:TObject);beginwithcanvasdobeginPen.Color:=clred;/设置画笔颜色pen.Width:=3;/设置画笔大小moveto(10,10);lineto(50,60);font.Color:=clPurple;textout(10,60,画直线);pen.Color:=clgreen;polyline(point(100,10),point(120,50),point(140,10),point(160,50),point(180,10);textout(80,60,用Polyline命令来画折线);pen.Color:=clyellow;Rectangle(240,10,340,50);Textout(220,60,用Rectangle命令来画矩形);pen.Color:=clMaroon;,9.1.3画布对象的方法(4),Roundrect(400,10,450,60,5,10);textout(360,60,用Roundrect命令来画圆角矩形);pen.color:=clNavy;Ellipse(10,100,100,150);textout(10,160,用Ellipse命令来画椭圆);pen.Color:=clPurple;arc(140,100,240,150,160,110,220,130);textout(140,160,用arc命令来画圆弧);pen.Color:=clOlive;pie(260,100,360,150,280,140,330,140);textout(260,160,用pie命令来画饼图);pen.Color:=clFuchsia;chord(380,100,480,150,390,120,450,120);textout(380,160,用chord命令来画帽图);pen.Color:=clTeal;polygon(point(10,200),point(90,200),point(50,250);textout(10,260,用Polygon命令来画三角形);pen.Color:=clAqua;polyline(point(160,200),point(240,200),point(200,250),point(160,200);/注意和Polygon命令的区别textout(160,260,用Polyline命令来画三角形);end;end;,9.1.3画布对象的方法(5),主要程序代码procedureTForm1.FormPaint(Sender:TObject);vari:integer;str1:string;beginfori:=0to255dobeginwithcanvasdobeginpen.Color:=rgb(i,i,i);/指定画笔颜色moveto(0,i);lineto(form1.ClientWidth,i);end;end;withcanvasdo,【例9-6】将窗体背景颜色由深变浅显示,如图9-10所示。,图9-10颜色变化,9.1.3画布对象的方法(6),beginbrush.style:=bsclear;font.Color:=clwhite;font.Size:=15;font.Style:=fsbold;str1:=上深下浅的窗体背景;textout(30,40,上深下浅的窗体背景);end;end;,【例9-7】程序功能:当在界面上任意单击时,屏幕上产生一个随机大小颜色的矩形,里面有一个椭圆。实现后的界面如图9-11所示。,图9-11随机产生,首先定义一个过程star,它的功能是画出随机大小颜色的矩形。主要的程序代码如下:procedurestar(a,b:integer);varx,y:integer;,9.1.3画布对象的方法(7),c,d:tcolor;/定义颜色变量point1,point2:tpoint;rect1:trect;beginx:=random(form1.ClientWidth);/取得一个随机值y:=random(form1.ClientHeight);c:=random($00ffffff);/取得一种随机颜色d:=random($00ffffff);form1.Canvas.Pen.Color:=c;/设置画笔的颜色form1.Canvas.Pen.Width:=3;/设置画笔的线宽point1:=point(x-a,y-b);/矩形左上角的坐标point2:=point(x+a,y+b);/矩形右上角的坐标rect1:=rect(point1,point2);form1.Canvas.rectangle(rect1);/画矩形form1.Canvas.Pen.Color:=d;/设置画椭圆的画笔的颜色form1.Canvas.Pen.Width:=1;/设置画椭圆的画笔的线宽form1.Canvas.Brush.Color:=d;/设置画椭圆的填充色form1.Canvas.Ellipse(rect1);/画椭圆form1.canvas.Brush.Style:=bsclear;/取消填充色end;,9.1.3画布对象的方法(8),procedureTForm1.FormClick(Sender:TObject);beginrandomize;star(random(50),random(50);end;可以看到在画图形的时候,先前的那个图形并没有被擦除掉,因而窗体不久就会变得混乱不堪。该怎样来解决这个问题呢?只要在图形显示代码中加入rerfesh方法来刷新图形显示就可以了。,【例9-8】阴影的制作,主要界面如图9-12所示。,图9-12阴影的制作,这个按钮就有了一个阴影效果,其实只要根据这个按钮的Top、Left、Width、Height等属性,确定要绘制直线的起点和终点就可以了。主要的程序代码如下:procedureTForm1.FormPaint(Sender:TObject);vari,m,n:integer;begin,9.1.3画布对象的方法(9),m:=0;n:=0;form1.Canvas.Pen.Width:=2;fori:=0to4dobeginwithform1.Canvasdobeginpen.Color:=$00a0a0a0;moveto(button1.Left+button1.Width+m,button1.Top+n);/起始点为右上角。lineto(button1.Left+button1.Width+m,button1.Top+button1.height+n);/终点是右下角。pen.Color:=$00606060;moveto(button1.Left+m,button1.Height+button1.Top+n);/起始点为左下角lineto(button1.Left+button1.Width+m,button1.Height+button1.Top+n);/终点为右下角。m:=m+1;n:=n+1;end;end;end;,9.2图像组件的介绍和使用,Shape组件在工具栏Additional中,如图9-13所示。用来绘制简单的几何图形,如矩形、圆、椭圆,等等。,Delphi7.0为用户提供了图像组件,这一节主要是讲这些组件的使用。,9.2.1Shape组件,图9-13Shape控件,1.Shape组件的属性Shape组件和Canvas对象一样,主要属性有Brush画笔属性、Pen画笔属性、Shape属性。Brush画笔属性和Pen画笔属性跟前面讲的差不多,就不在累述了。接下来主要介绍Shape属性。Shape属性是形状组件最重要的属性,它决定形状组件的形状。取值如表9-5所示。详见本教程P166页。,9.2.1Shape组件,【例9-9】Shape组件使用。在屏幕上放上6个shape组件,然后输入以下代码:procedureTForm1.FormCreate(Sender:TObject);beginshape1.Shape:=stcircle;/圆形shape1.Pen.Color:=clred;/画笔颜色shape1.Pen.Style:=psdash;/画笔类型为虚线shape1.Pen.Width:=3;/画笔粗细shape1.Brush.Color:=clgreen;/画刷颜色shape1.Brush.Style:=bscross;/画笔类型为十字交叉shape2.Shape:=stellipse;/椭圆shape2.Brush.Style:=bsvertical;/垂直线shape3.Shape:=strectangle;/矩形shape4.Shape:=stroundrect;/圆角矩形shape5.Shape:=stsquare;/正方形shape6.Shape:=stroundsquare;/圆角正方形end;运行结果如图9-14所示。,图9-14shape形状,9.2.2Image组件(1),图像组件Timage在工具栏Additional中,如图9-15所示。,图9-15Image组件,它是一种容器控件,在应用程序的窗体上提供了一个矩形区域。Image对象是建立在Bitmap、Icon、Picture等对象的基础上,用于显示图片(扩展名为.bmp、.ico、.wmf、.jpg的文件)。它的一个重要属性是picture属性,这个属性是调入显示的图片。,【例9-10】Image组件的使用。这个程序主要实现的功能:单击两个调入按钮来载入不同的图画,也可以单击保存按钮来保存图画。运行时的界面如图9-16所示。,图9-16Image控件的使用,9.2.2Image组件(2),1.主要操作步骤在form1中放三个Tbutton组件和一个Timage组件;分别设置三个Tbtton的Caption属性如图9-16所示。,2.主要程序代码procedureTForm1.Button1Click(Sender:TObject);beginimage1.Picture.LoadFromFile(C:ProgramFilesCommonFilesBorlandSharedImagesSplash256Colorhandshak.bmp);/调入图像end;procedureTForm1.Button2Click(Sender:TObject);beginimage1.Picture.LoadFromFile(C:ProgramFilesCommonFilesBorlandSharedImagesSplash256ColorCHEMICAL.bmp);end;procedureTForm1.Button3Click(Sender:TObject);,9.2.2Image组件(3),beginimage1.Picture.SaveToFile(d:pg.bmp);/用savetofiel方法来保存图像end;,程序运行过程中调入的图片只能显示出一角,不能显示出整张图片,该怎么来解决这个问题呢?一种方法是:设置Image组件的AutoSize的属性为True,这个Image组件就可以自动调节来适应图像的大小。另一种方法是:设置Image组件的Stretch属性,如果把Stretch属性设置为True,表示图像会自动地放大或者缩小使得和Image组件的大小一样。如果Image的大小发生变化,则图像的大小也随着变化,如果设置为False,则图像会按照原来的大小显示出来。,注意:对于Image组件中的Picture对象,loadfromfile和SaveTofile是最常用的两个方法。,9.2.2Image组件(4),【例9-11】Autosize属性和Stretch属性,运行界面如图9-17所示。,图9-17Autosize属性和Stretch属性,主要的程序代码如下:在FormCreate中调入图画procedureTForm1.FormCreate(Sender:TObject);beginimage1.Picture.LoadFromFile(C:ProgramFilesCommonFilesBorlandSharedImagesSplash256Colorhandshak.bmp);image2.Picture.LoadFromFile(C:ProgramFilesCommonFilesBorlandSharedImagesSplash256Colorhandshak.bmp);image3.Picture.LoadFromFile(C:ProgramFilesCommonFilesBorlandSharedImagesSplash256Colorhandshak.bmp);end;,9.2.2Image组件(5),procedureTForm1.CheckBox2Click(Sender:TObject);beginimage2.Stretch:=checkbox2.Checked;/选择checkbox2,把image2的stretch属性设置为trueend;procedureTForm1.CheckBox1Click(Sender:TObject);beginimage1.AutoSize:=checkbox1.Checked;/选择checkbox1,把image1的autosize属性设置为true;end;就可以看到图片完整地显示出来了。要注意的是,如果同时设置Autosize和Stretch属性为True,那么先响应Autosize的属性。,9.2.3Paintbox组件(1),Paintbox组件主要提供一个可以用来绘制几何图形的矩形区域,可以使用绘图语句在这个区域内绘制各种图形。Paintbox的绘图方式与Form等其他绘图组件基本上一样,都是通过Canvas对象来完成的。所不同的是绘制的坐标是以Paintbox对象的左上角为原点,而不是以窗体的左上角为原点,且当设定的背景色与Form相同的时候,其运行的结果和在窗体上绘图的效果一样。使用Paintbox组件绘图的一个好处是只需将图形画在Paintbox组件上面,这样就可以避免计算坐标原点了。,画板组件Paintbox在System页中,如图9-18所示。,图9-18Paintbox组件,【例9-12】输入圆的坐标和半径求圆的面积和周长,如图9-19所示。,图9-19paintbox组件的使用,9.2.3Paintbox组件(2),1.主要步骤在form1上添加6个Tlabel组件,它们的Caption属性如图9-19所设置。在form1添加5个Tedit组件,并且把它们的Text属性设置为0。设置edit4,edit5的Readonly属性为True。在form1中添加一个TPaintbox组件,设置它的Align属性为alLeft。在form1中添加一个TButton组件,设置它的Caption属性为计算。,2.主要程序代码publicPublicdeclarationsx,y:integer;/定义公共变量,x,y是为了取得Paintbox1的中点end;varForm1:TForm1;implementation$R*.dfm下面代码是为了画坐标轴procedureTForm1.FormPaint(Sender:TObject);Vari:integer;/定义I变量是为了控制循环,9.2.3Paintbox组件(3),beginpaintbox1.Canvas.Pen.color:=clblue;/定义画笔颜色paintbox1.Canvas.Brush.Style:=bsclear;x:=round(paintbox1.ClientWidth/2);/取得x方向的中点y:=round(paintbox1.ClientHeight/2);/取得y方向的中点paintbox1.Canvas.MoveTo(x,0);paintbox1.Canvas.LineTo(x,paintbox1.Height);/画y轴paintbox1.Canvas.MoveTo(0,y);paintbox1.Canvas.LineTo(paintbox1.Width,y);/画x轴下面的循环是为了输出坐标轴上的坐标和数值fori:=-15to15dobeginifi0thenbeginpaintbox1.Canvas.Moveto(x+i*20,y);paintbox1.Canvas.LineTo(x+i*20,y-5);/画出x方向上的坐标,乘以20只不过是为了在x方向上的坐标有一些间距。paintbox1.Canvas.TextOut(x+i*20,y+5,inttostr(i);/画出x方向上的数值paintbox1.Canvas.MoveTo(x,y+i*20);paintbox1.Canvas.LineTo(x+5,y+i*20);/画出y方向的坐标,9.2.3Paintbox组件(4),paintbox1.Canvas.Textout(x-15,y+i*20,inttostr(-i);/画出y方向上的数值end;end;end;下面的程序段是为了画圆和求出圆的面积和周长procedureTForm1.Button1Click(Sender:TObject);varc,s:real;/c代表圆周长,s代表圆面积a,b,r:integer;/a,b代表圆中心,r表示圆半径beginrefresh;/主要是为了去掉上一次所画的圆a:=strtoint(edit1.Text);b:=strtoint(edit2.Text);r:=strtoint(edit3.Text);paintbox1.Canvas.Ellipse(x+(a-r)*20,y+(b-r)*20,x+(a+r)*20,y+(b+r)*20);/画出圆s:=3.14159*r*r;c:=2*3.14159*r;edit4.Text:=floattostr(c);/求出圆周长edit5.Text:=floattostr(s);/求出圆面积end;,9.3使用鼠标绘图(1),鼠标常被用做绘图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 象棋胜负判断课件
- 诺病毒知识培训课件
- 2025年分布式光伏发电项目电力建筑工程安装劳务分包合同
- 2025年度教育机构场地租赁与课程合作合同
- 2025年新能源项目法律咨询与服务合同范本
- 2025版大型商业综合体水电安全运行管理合同
- 2025版建筑塔吊安装施工安全监督合同
- 2025年厨房空间利用优化与装修改造合同范本
- 2025年度商业地产项目投资风险评估与预警服务合同
- 2025年度房产租赁保证金退还合同书
- 路灯灯杆项目投资计划书
- 环保项目配电室电气安装方案
- 新概念第二册单词表(完整版)
- 初三考试化学试卷(含答案)
- 2024-2025学年小学信息技术(信息科技)五年级全一册义务教育版(2024)教学设计合集
- 【新课标】人音版五年级上册第一单元 朝夕 大单元整体教学设计
- 自然保护区管理中的生态系统恢复策略
- 试车跑道专项方案
- 2024年交管12123学法减分试题题库附答案
- 2024年湖南省长沙住房公积金管理中心招聘历年高频难、易点(公共基础测验共200题含答案解析)模拟试卷
- KA-T 20.1-2024 非煤矿山建设项目安全设施设计编写提纲 第1部分:金属非金属地下矿山建设项目安全设施设计编写提纲
评论
0/150
提交评论