当前位置:文档之家› Turbo Pascal图形编程教程

Turbo Pascal图形编程教程

Turbo Pascal图形编程教程Pascal是一款有很强图形功能的开发工具,它可以编制各种图形窗口,并且听说还支持鼠标.但是时过境迁,在vb,vc一统天下的今天,关于Pascal图形操作的书已经像古董一样难于寻找了,我现在将Tp 7.0的Help文件中的一些有关图形操作的过程与函数整理了一下,并自己写了一些例子,加入了一些自己的看法,便得到了这篇教程.其中如有错误,望各位不吝赐教。

阅读之前希望大家做好准备,比如:找一些食品放在跟前,因为你可能因为钻研一个函数而耗费大量的时间,还有你可能因为初始化无法完成而大动肝火。

第一章使用Pascal进行图形操作前的准备在 Turbo Pascal 中有一个 CRT 单元及一个 GRAPH 单元,简单的说 crt 单元是为了实现字符的显示与处理,另外的那个称为 GRAPH 单元是专门用来处理图形的。

我们看到的有关图形的程序往往都要用到。

所以若是要在 Turbo Pascal 中实现图形操作,就必须要调用 CRT 单元及 GRAPH 单元。

那么怎么样来调用 CRT 及 GRAPH 单元呢?现在线来介绍一下单元调用语句:USESUSES的语法:USES 单元表识符,……,单元表识符;说明:扩展名为*.TPW是Windows下的单元文件,*.TPU是DOS下的单元文件。

位置:变量说明var之前。

讲到这里,我还是要顺便提一下什么是单元?是这样的:我们在编程序的时候,要用到procedure 或者function ,中文名称一个是过程另一个是函数。

做不同的程序时,往往要用到一些相同的过程或者相同的函数。

如果统统放到程序中,程序会硕大无比,比例与调试与编译,并且在过去“惜kb如金”的年代里,这样的程序也很浪费。

于是,简单的讲,人们把它们做成“包”--我们称之为单元。

一来,免去很多重复的痛苦,大家共享代码也很简单,另外,很多不愿意让别人看到源程序的人也很乐于如此----这只是我的杜撰。

生产pascal 语言的公司也提供一些做好的单元,放在安装盘上方便实用。

crt ,graph 即使如此,还有dos ,system 等等。

第二章 Pascal图形模式的初始化及退出1.初始化Pascal的图形操作在使用之前必须先进行初始化。

如果说你编写图形程序中出现问题,十有八九是卡在这里了。

这也是非常令我头疼的问题。

用过程initgraph(GraphDriver,GraphMode,PathToDriver)其中GraphDriver,GraphMode为整形变量,PathToDriver为字符串变量,GraphDriver为图形驱动器,GraphMode为图形模式,PathToDriver指定的路径名中建筑图形驱动程序(以.BGI为后缀)。

initgraph使用方法见下例:program t001 (input,output);uses crt,graph;var gd:gm:integer; {定义GraphDriver,GraphMode变量}begingd:=detect;initgraph(gd,gm,'');{调用initgraph过程,PathToDriver缺省则表示在当前目录中寻找《-------这个很重要,一般也可以写成initgraph(gd,gm,'c:\tp\bgi'); 当然如果你是如此安装的话。

}bar(100,100,200,200); {画一个以(100,100),(200,200)为顶点的矩形,这是一个标准过程,你在后面还会看到一个名为bar3d的东东,那个是画立体矩形的}delay(1000); {将此图形保留一秒,10000就是10秒,依此类推}end.2.退出Closegraph过程功能:退出图形模式.在图形模式下如果使用 write 等等文本输出可能会出问题---比如无法看到等等。

好像还可能引起显示上的问题,反正养成一个好习惯也没什么不好的。

这里有一个技巧,当你发现无论如何调整都无法显示图形时,你可以调用自带的例子,用来测试,看看是否是程序本身的问题。

注意,这里有一个不属于图形的,但是非常容易遇到的问题。

前面我们说过,在图形编程使用graph 单元的时候,我们也常常会使用crt单元,这就有一个问题:crt 单元在主频高的机器上无法正常运行。

会出现 200 号错误!!!请下载补丁,在我们的网站上就有。

还有一种情况,就是出了问题没有提示!表现是运行程序什么反应也没有。

如果你出现这种情况,首先检查程序,如果没有问题,非常有可能使这种情况,也请下载补丁!据报告奔腾180以上的机器具都不同程度存在这种问题!第三章基本几何图形的绘制画直线:1.Line过程描述:procedure Line(x1, y1, x2, y2: Integer);两点确定一直线.够简单吧!2.Lineto过程描述:procedure LineTo(X, Y: Integer);从当前点项目标点(x,y)作直线.画圆:1.Circle过程功能:以(X,Y)为圆心、Radius为半画一圆。

描述:procedure Circle(X,Y:Integer;Radius:Word);示例:Circle(100,100,200) {画一个以(100,100)为圆心,200为半径的圆}画椭圆:1. Ellipse过程功能:画一个以(X,Y)为中心,XRadius和YRadius为半轴,StAngle和EndAngle为始角和终角的椭圆弧。

描述:procedure Ellipse(X,Y:Integer;StAngle,EndAngle:Word;XRadius,YRadius:Word);说明:角度沿逆时针方向,单位是度。

0度指向东。

画圆弧:1.Arc过程功能: 画一个以(X,Y)为中心,Radius为半径,StAngle和EndAngle为始角和终角的圆弧。

描述: procedure Arc(X,Y : Integer; StAngle,EndAngle,Radius:Word);说明: 角度沿逆时针方向,单位是度。

0度指向东。

示例: Arc(100,100,0,90,50) {画出第一卦限1/4圆,半径50,圆心(100,100)}画矩形:1.Bar过程功能:画一个以(x1,y1),(x2,y2)为两个对角顶点的矩形。

描述:procedure Bar(x1,y1,x2,y2:integer);示例:Bar(100,100,200,200) {画一个以(100,100),(200,200)为对角顶点的矩形}2.Bar3d过程功能:画一个长方体.描述:procedure Bar3d(x1,y1,x2,y2:integer,depth:word,top:boolean); {x1,x2,y1,y2同上,为长方体的厚度 ,top为是否画出顶面.}线形,颜色,及填充设置线形设置:1.setlinestyle过程功能:设置线形,及线宽.描述:procedure SetLineStyle(LineStyle: Word; Pattern: Word; Thickness: Word);说明:linestyle(线形)一共有三种.代号0,1,2;线形如下图:Thichness(线宽)有两种.代号1,3.1为普通线.3为宽线.2.GetLineSettings过程功能:返回当前设置的线型设置信息.描述:procedure GetLineSettings(var LineInfo: LineSettingsType);{参见LineSettingsType 类型}3.LineSettingsType类型描述:LineSettingsType = recordLineStyle : Word; {线形}Pattern : Word; {模式}Thickness : Word; {线宽}end;此类型记录了一种线形的信息.线形,颜色及线形设置颜色设置:在pascal中共有16种颜色可以使用.1.setcolor过程描述: procedure SetColor(Color: Word);设置线的颜色.颜色代码如上图.2.GetColor函数功能:返回最后一次作图时的颜色值描述:function GetColor:word示例:color:=GetColor; {color:word}3.GetMaxColor函数功能:返回系统可用的最大颜色数.描述:num:=GetMaxColor; {将最大颜色数存到num变量中}填充设置:1.SetFillStyle过程功能设置填充模式和颜色。

描述 procedure SetFillStyle(Pattern:Word;Color:Word);说明设置用于Bar,Bar3D的填充模式和颜色。

可生系列填充模式。

缺省模式是实心点,缺省模式是实心点,缺省颜色是调色板中最大颜色序号值。

如果传递给SetFillStyle的输入参数无效,GraphResult将返回值grError,且当前填充参数不改变。

填充设置如下图:<![endif]>2.FillSettingsType 类型描述:FillSettingsType=recordPattern:word;Color :word;end;此类型记录了一种填充模式的信息.这些知识都很简单,更多的可以在编辑环境中按下f1观看帮助文档。

第一章使用Pascal进行图形操作前的准备Pascal是一款有很强图形功能的开发工具,它可以编制各种图形窗口,并且听说还支持鼠标.但是时过境迁,在vb,vc一统天下的今天,关于Pascal图形操作的书已经像古董一样难于寻找了,我现在将Tp 7.0的Help文件中的一些有关图形操作的过程与函数整理了一下,并自己写了一些例子,加入了一些自己的看法,便得到了这篇教程。

在Turbo Pascal中有一个CRT单元及一个GRAPH单元,有些图形操作用到了CRT单元,另一些用到了GRAPH单元。

所以若是要在Turbo Pascal中实现图形操作,就必须要调用CRT单元及GRAPH单元。

那么怎么样来调用CRT及GRAPH单元呢?现在线来介绍一下单元调用语句:USESUSES的语法:USES 单元表识符,……,单元表识符;说明:扩展名为*.TPW是Windows下的单元文件,*.TPU是DOS下的单元文件。

位置:变量说明var之前。

第二章Pascal图形模式的初始化及退出1.初始化Pascal的图形操作在使用之前必须先进行初始化,用过程initgraph(GraphDriver,GraphMode,PathToDriver)其中GraphDriver,GraphMode为整形变量,PathToDriver为字符串变量,GraphDriver为图形驱动器,GraphMode为图形模式,PathToDriver指定的路径名中建筑图形驱动程序(以.BGI为后缀).initgraph使用方法见下例:program t001 (input,output);uses crt,graph;var gd,gm:integer; {定义GraphDriver,GraphMode变量}begingd:=detect;initgraph(gd,gm,\'\'); {调用initgraph过程,PathToDriver缺省则表示在当前目录中寻找}bar(100,100,200,200); {画一个以(100,100),(200,200)为顶点的矩形} delay(1000); {将此图形保留一秒}end.2.退出Closegraph过程功能:退出图形模式.第三章基本几何图形的绘制画直线:1.Line过程描述:procedure Line(x1, y1, x2, y2: Integer);两点确定一直线.够简单吧!2.Lineto过程描述:procedure LineTo(X, Y: Integer);从当前点项目标点(x,y)作直线.画圆:Circle过程功能:以(X,Y)为圆心、Radius为半画一圆。

相关主题