在Turbo Pascal中有一个CRT单元及一个GRAPH单元,有些图形操作用到了CRT单元,另一些用到了GRAPH单元。所以若是要在Turbo Pascal中实现图形操作,就必须要调用CRT单元及GRAPH单元。那么怎么样来调用CRT及GRAPH单元呢?现在线来介绍一下单元调用语句:USES USES的语法:
USES 单元表识符,……,单元表识符; 说明:
扩展名为*.TPW是Windows下的单元文件,*.TPU是DOS下的单元文件。 位置:变量说明var之前。
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变量} begin gd:=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为半画一圆。 描述:procedure Circle(X,Y:Integer;Radius:Word);
示例:Circle(100,100,200) {画一个以(100,100)为圆心,200为半径的圆}
画椭圆:Ellipse过程
功能:画一个以(X,Y)为中心,XRadius和YRadius为半轴,StAngle和EndAngle为始角和终角的椭圆弧。
描述:procedure Ellipse(X,Y:Integer;StAngle,EndAngle:Word;XRadius,YRadius:Word); 说明:角度沿逆时针方向,单位是度。0度指向东。
画圆弧: 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(线宽)有两种:普通线,宽线。
2.GetLineSettings过程
功能:返回当前设置的线型设置信息。
描述:procedure GetLineSettings(var LineInfo: LineSettingsType);{参见LineSettingsType类型}
3.LineSettingsType类型 描述:LineSettingsType = record LineStyle : Word; {线形} Pattern : Word; {模式} Thickness : Word; {线宽} end;
此类型记录了一种线形的信息.
二、颜色设置:
在pascal有16种颜色可以使用. 如图所示:(第15种为白色,黑色未列入)
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,且当前填充参数不改变。 填充设置如下图:
2.FillSettingsType 类型 描述:FillSettingsType=record Pattern:word; Color :word; end;
此类型记录了一种填充模式的信息.
RestoreCrtMode; 切换到我们常用的文本模式。SetGraphMode(GetGraphMode); 切换到作图方式, 不能在closegraph关闭图形之后用。
procedure Arc (坐标X,坐标Y;Integer;开始角度,结束角度,半径; Word); 备注:画弧
procedure Bar(坐标x1,坐标y1,坐标x2,坐标y2: Integer); 备注:画一个已填充的正方形
procedure Bar3D(坐标x1,坐标y1,坐标x2,坐标y2:Integer;高:Word;有没有顶:Boolean); 备注:画立方体
procedure Circle(坐标X,坐标Y:Integer;半径:Word); 备注:画圆
procedure ClearDevice;
备注:把指示器移到(0,0),用背景颜色去清屏,准备输出
procedure ClearViewPort;
备注:把填充颜色变为背景色,把指示器移到(0,0)
procedure CloseGraph 备注:关掉图象(garph)模式
procedure DetectGraph(var 驱动器,模式:Integer); 备注:检查硬件和找出用哪个驱动器和模式
procedure DrawPoly(点数: Word; var 坐标:PolyPoints); 备注:画多边形
procedure Ellipse(坐标X,坐标Y:Integer;开始角度,结束角度:Word;半径1,半径2:Word);
备注:画椭圆
procedure FillEllipse(坐标X,坐标Y:Integer;半径1,半径2: Word); 备注:画一个已填充的椭圆
procedure FillPoly(点数: Word; var 坐标:PolyPoints); 备注:画一个已填充的多边形
procedure FloodFill(坐标X,坐标Y:Integer;边界颜色: Word); 备注:填充一个边界的区域
procedure GetArcCoords(var 记录变量: _ArcCoordsType_); 备注:得到上一次画弧时的开始坐标,结束坐标和圆心坐标
procedure GetAspectRatio(var 比例X,比例Y:Word); 备注:得到屏幕高宽的比例
function GetBkColor: Word; 备注:返回当前的背景颜色
function GetColor: Word; 备注:得到当前的画图颜色
function GetDefaultPalette(var 记录变量: PaletteType); 备注:得到默认的颜色记录
function GetDriverName: string; 备注:得到驱动器的名字
procedure GetFillPattern(var 记录变量: FillPatternType); 备注:得到填充的模式
procedure GetFillSettings(var 记录变量: FillSettingsType); 备注:得到填充的设置
function GetGraphMode: Integer; 备注:得到图形的模式
procedure GetImage(坐标x1,坐标y1,坐标x2,坐标y2:Integer;var 位图:pointer); 备注:把一个指定区域里的一小片图象保存在缓冲器里
procedure GetLineSettings(var 记录变量: LineSettingsType); 备注:得到线的设置
function GetMaxColor: Word; 备注:得到最大的颜色
function GetMaxMode: Integer; 备注:得到最大的模式
function GetMaxX: Integer; 备注:得到最大的X坐标
function GetMaxY: Integer; 备注:得到最大的Y坐标
function GetModeName(模式序号: Integer): string; 备注:得到模式名
procedure GetModeRange(图象驱动:Integer; var 最小模式,最大模式:Integer); 备注:得到模式范围
procedure GetPalette(var 记录变量: PaletteType); 备注:得到当前的颜色记录
function GetPaletteSize: Integer;
备注:得到屏幕中颜色记录的尺寸
function GetPixel(坐标X,坐标Y: Integer): Word; 备注:得到(X,Y)的颜色
procedure GetTextSettings(var 记录变量: TextSettingsType); 备注:得到文字设置
procedure GetViewSettings(var ViewPort: ViewPortType); 备注:得到显示设置
function GetX: Integer;
备注:得到当前指示器的X坐标
function GetY: Integer;
备注:得到当前指示器的Y坐标
procedure GraphDefaults;
备注:把graph的所有设置变为原始状态
function GraphErrorMsg(错误号: Integer): string; 备注:返回指定错误号的信息
function GraphResult: Integer; 备注:返回最后一次画图时的错误号
function ImageSize(坐标x1,坐标y1,坐标x2,坐标y2:坐标Integer):坐标Word; 备注:返回一片区域储存所许的字节数
procedure InitGraph(var 驱动器:Integer;var 模式:Integer;到驱动器的路径:string); 备注:graph初始化
procedure Line(坐标x1,坐标y1,坐标x2,坐标y2:Integer); 备注:画线
procedure LineRel(坐标Dx,坐标Dy:Integer);
备注:画一条到指示器的线,坐标是对于指示器为(0,0)来说的
procedure LineTo(坐标X,坐标Y:Integer); 备注:画一条到指示器的线
procedure MoveRel(坐标Dx,坐标Dy: Integer);
备注:把指示器依到(Dx,Dy),坐标是对于指示器为(0,0)来说的
procedure MoveTo(坐标X,坐标Y: Integer); 备注:把指示器依到(x,y)
procedure OutText(字符串: string); 备注:在指示器位置上输出字符串
procedure OutTextXY(坐标X,坐标Y: Integer;字符串: string); 备注:在(x,y)位置输出字符串
procedure PieSlice(坐标X,坐标Y:Integer;开始角度,结束角度,半径:Word); 备注:画一个已填充的扇形
procedure PutImage(坐标X,坐标Y:Integer;var 位图:pointer;BitBlt:Word); 备注:把一个图象显示到显示器上,BitBlt处可为NormalPut,XORPut或者NotPut
procedure PutPixel(坐标X,坐标Y: Integer;颜色: Word); 备注:在(X,Y)上显示一个1*1的正方形
procedure Rectangle(坐标x1,坐标y1,坐标x2,坐标y2: Integer); 备注:画正方形
procedure RestoreCrtMode;
备注:恢复到刚初始化时的状态
procedure Sector(坐标x,坐标y:Integer;开始角度,结束角度,半径X,半径Y:Word); 备注:画一个已填充的椭圆部分
procedure SetActivePage(Page: Word); 备注:设置当前画图所在的页
procedure SetAllPalette(var Palette); 备注:把所有颜色设置变为特定的
procedure SetBkColor(颜色: Word); 备注:设置背景颜色
procedure SetColor(颜色: Word); 备注:设置颜色
procedure SetFillPattern(记录变量: FillPatternType;颜色:Word); 备注:设置填充颜色模式
procedure SetFillStyle(模式: ord;颜色: Word); 备注:设置填充颜色风格
procedure SetLineStyle(线风格:Word;模式:Word;厚度:Word); 备注:设置线的风格
procedure SetPalette(颜色序号:Word;颜色:Shortint); 备注:设置调色版
procedure SetTextStyle(字体,方向:Word;大小:Word); 备注:设置文字风格
procedure SetVisualPage(Page: Word); 备注:设置当前显示的页
procedure SetWriteMode(写字模式: Integer); 备注:设置写字模式
function TextHeight(字符串: string): Word; 备注:文字的高
function TextWidth(TextString: string): Word; 备注:文字的宽