首页 百科知识 视区与图形处理

视区与图形处理

时间:2022-09-22 百科知识 版权反馈
【摘要】:C语言系统默认的计算机屏幕显示模式为文本模式。如果要绘制图形,应先将屏幕显示模式转换成图形模式,因此,必须事先对图形模式进行初始化。void getviewsettings;该函数主要作用是获取当前窗口的信息,并将其存储在struct viewporttype定义的结构体变量中。setviaualpage()函数是使pagenum图形页成为可见的。如果要在图形方式下显示输出文本,可以直接调用C语言提供的标准函数来实现。其中,textheight()函数用来自动计算并确定字符串textstring的高度。

11.3.3 视区与图形处理

C语言系统提供了许多图形

处理函数供用户使用,使用这些函数编程,必须将其相应的头文件graphics.h包含到程序中来。

1.图形模式的初始化

C语言系统默认的计算机屏幕显示模式为文本模式。如果要绘制图形,应先将屏幕显示模式转换成图形模式,因此,必须事先对图形模式进行初始化。

图形模式初始化函数的原型如下:

void far initgraph(int far *gdriver,int far *gmode,char *path);

其中,gdriver表示图形驱动器,gmode表示图形模式(如表11-6所示),path表示图形驱动程序所在的目录及路径,如果没有指明路径,即为当前目录。

表11-6 图形模式

img738

例如:

img739

上述程序代码是采用硬件自动检测的方式初始化图形模式。

2.屏幕颜色的设置

Turbo C图形模式下常用的屏幕函数有两个,其函数原型如下:

void far setbkcolor(int color);

void far setcolor(int color);

其中,setbkcolor()函数用来设置屏幕的背景颜色,setcolor()函数用来设置所绘制的图形对象颜色。color取值如表11-2所示。

例11.2

程序如下:

img740

程序运行结果是在黄色的底色上绘制一个蓝色的圆和一个蓝色的直线段。

3.图形窗口和图形屏幕函数

(1)图形窗口设置函数。

设置图形窗口的函数为setviewport(),其函数原型如下:

void far setviewport(int x1,int y1,int x2,int y2,int clipfiag);

其中,(x1,y1)表示视区左上角坐标,(x2,y2)表示右下角坐标,clipflag表示裁剪标志,如果取1,表示超出图形窗口的图形对象将自动被裁剪,如果取0,表示超出图形窗口的图形对象不被裁剪。

(2)清屏函数。

常用的清屏函数有两个,其函数原型如下:

void far cleardevice(void);

void far clearviewport(void);

其中,cleardevice()函数用来清除整个屏幕,将光标位置移到原点(0,0),clearviewport()用来清除当前窗口,将光标位置移到原点(0,0),当前窗口消失。

(3)窗口图形存取函数。

窗口图形存取函数为getviewsettings(),其函数原型如下:

void getviewsettings(struct viewporttype far *viewport);

该函数主要作用是获取当前窗口的信息,并将其存储在struct viewporttype定义的结构体变量中。struct viewporttype结构体类型定义如下:

img741

其中,(left,top)表示当前窗口的左上角,(right,bottom)表示当前窗口的右下角屏坐标,clipflag表示超出当前窗口的图形是否被切断。

(4)设置图形活动页和可见页。

C语言系统提供了设置图形活动页和可见页的函数,其原型分别如下:

void far setactivepage(int pagenum);

void far setviaualpage(int pagenum);

其中,setactivepage()函数是将pagenum设置成为活动的图形页,使输出的图形都是针对pagenum图形页的。setviaualpage()函数是使pagenum图形页成为可见的。

(5)图形屏幕管理函数。

C语言图形库提供了三个图形管理函数,其函数原型分别如下:

void far getimage(int left,int top,int right,int bottom,void far *bitmap);

void far putimage(int left,int top,void far *bitmap,int op);

unsigned far imagesize(int left,int top,int right,int bottom);

其中,getimage()函数用来获取当前屏幕上的图形,形参bitmap指向存放图像的存储空间。imagesize()函数用来计算存放所获取的图形所需存储空间的字节数。putimage()函数将存储的图形输送到屏幕的任意位置,形参op用来控制图形以何种方式出现在屏幕上,具体值如表11-7所示。

表11-7 屏幕操作函数

img742

4.图形方式下的文本操作函数

如果要在图形方式下显示输出文本,可以直接调用C语言提供的标准函数来实现。如果要使用这些操作函数,必须将其头文件graphics.h包含到程序中来。

(1)outtext()函数。

函数原型如下:

void far outtext(char far *textstring);

按照当前对齐方式和当前字体、方向、大小在视区中显示一个字符串。

例如:

outtext("How are you ?");

(2)textheight()函数和textwidth()函数。函数原型分别如下:

int far textheight(char far *textstring);

int far textwidth(char far *textstring);

其中,textheight()函数用来自动计算并确定字符串textstring的高度。Textwidth()函数用来自动计算并确定字符串textstring的宽度。

例如:

img743

(3)outtextxy()函数。

函数原型如下:

void far outtextxy(int x,int y,char far *textstring);

利用outtextxy()函数可以按照当前对齐方式及当前字体、方向、大小在视区中的指定位置输出一个字符串。

例如:

img744

表示在视区坐标(5,5)位置处输出字符串"How are you ?"。

(4)settextstyle()函数。

函数原型如下:

void far settextstyle(int font,int direction,int charsize);

settextstyle()函数用来设置图形方式下输出文本的字体、显示方向和字符的大小。调用该函数后,将直接影响outtext()函数和outtextxy()函数的输出结果。

①形参font表示输出文本的字体,取值如表11-8所示。

表11-8 font取值表

img745

②形参direction表示文字的输出方向,取值如表11-9所示。

表11-9 font取值表

img746

③形参charsize表示字体放大因子,取值为0~10。

(5)moveto()函数。

函数原型如下:

void far moveto(int x,int y);

将当前光标位置移动到视区坐标(x,y)。

例如:

moveto(5,10);

(6)restorecrtmode()函数和closegraph()函数。

函数原型分别如下:

void far restorecrtmode(void);

void far closegraph(void);

其中,restorecrtmode()函数是将屏幕显示恢复到initgraph()函数所检测到的原视频模式,closegraph()函数释放所有图形系统分配的存储区,恢复到调用initgraph()函数之前的视频模式。

例11.3 图形方式下的屏幕显示。

img747

img748

程序运行结果读者自行分析。

例11.4 图形方式下输出文字。

程序如下:

img749

img750

程序运行结果读者自行分析。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈