常华。第一节图形模式的初始化。
turbo c 提供了非常丰富的图形函数,所有图形函数的原型均在graphics. h 中,本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。
另外,使用图形函数时要确保有显示器图形驱动程序*.bgi,同时将集成开发环境options/linker中的graphics lib选为on,只有这样才能保证正确使用图形函数。
不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器,在不同模式下也有不同分辨率。因此,在屏幕作图之前,必须根据显示器适配器种类将显示器设置成为某种图形模式,在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。
设置屏幕为图形模式,可用下列图形初始化函数:
void far initgraph(int far *gdriver, int far *gmode,char *path);
其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见graphics. h。
图形驱动程序由turbo c出版商提供,文件扩展名为。bgi。 根据不同的图形适配器有不同的图形驱动程序。例如对于ega、 vga 图形适配器就调用驱动程序。
#include ""
#include ""
int main()
int gdriver, gmode;
gdriver=vga;
gmode=vgahi;
initgraph(&gdriver, &gmode, "c:\\tc2.0\\bgi");
bar3d(100, 100, 300, 250, 50, 1); 画一长方体*/
getch();
closegraph();
return 0;
有时编程者并不知道所用的图形显示器适配器种类,或者需要将编写的程序用于不同图形驱动器,turbo c 提供了一个自动检测显示器硬件的函数,其调用格式为:
void far detectgraph(int *gdriver, *gmode);
其中gdriver和gmode的意义与上面相同。
自动进行硬件测试后进行图形初始化:
#include ""
#include ""
int main()
int gdriver, gmode;
detectgraph(&gdriver, &gmode); 自动测试硬件*/
printf("the graphics driver is %d, mode is %d",gdriver,gmode); 输出测试结果*/
getch();
initgraph(&gdriver, &gmode, "c:\\tc2.0\\bgi");
* 根据测试结果初始化图形*/
bar3d(100, 100, 300, 250, 50, 1); 画一长方体*/
getch();
closegraph();
return 0;
上例程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置,但turbo c提供了一种更简单的方法, 即用gdriver=detect 语句后再跟initgraph()函数就行了。
采用这种方法后,上例可改为:
#include ""
#include ""
int main()
int gdriver=detect, gmode;
initgraph(&gdriver, &gmode, "c:\\tc2.0\\bgi");
bar3d(50, 50, 150, 30, 50, 1);
getch();
closegraph();
return 0;
另外,turbo c 提供了退出图形状态的函数closegraph(),其调用格式为:
void far closegraph(void);
第二节屏幕颜色的设置和清屏函数。
对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在turbo c中分别用下面两个函数:
设置背景色:
void far setbkcolor(int color);
设置作图色:
void far setcolor(int color);
其中color 为图形方式下颜色的规定数值,对ega,vga显示器适配器,有关颜色的符号常数及数值见。
清除图形屏幕内容但不清除图形背景使用清屏函数,其调用格式如下:
voide far cleardevice(void);
#include ""
#include ""
int main()
int gdriver, gmode, i,aa;
gdriver=detect;
initgraph(&gdriver, &gmode, "c:\\tc2.0\\bgi");图形初始化*/
setbkcolor(0); 设置图形背景*/
cleardevice();
for(i=0; i<=15; i++)
setcolor(i); 设置不同作图色*/
circle(320, 240, 20+i*10); 画半径不同的圆*/
getch();
for(i=0; i<=15; i++)
setbkcolor(i); 设置不同背景色*/
cleardevice();
circle(320, 240, 20+i*10);
getch();
aa=getmaxcolor();
printf("maxcolor=%d",aa);
getch();
closegraph();
return 0;
另外,turbo c也提供了几个获得现行颜色设置情况的函数。
int far getbkcolor(void);
返回现行背景颜色值。
int far getcolor(void);
返回现行作图颜色值。
int far getmaxcolor(void);
返回最高可用的颜色值。
第三节基本画图函数。
基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。
、画点。. 画点函数
void far putpixel(int x, int y, int color);
该函数表示有指定的象元画一个按color 所确定颜色的点。对于颜色color的值可从表3中获得而对x, y是指图形象元的坐标。
在图形模式下,是按象元来定义坐标的。对vga适配器,它的最高分辨率为640x480,其中640为整个屏幕从左到右所有象元的个数,480为整个屏幕从上到下所有象元的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639, 479),水平方向从左到右为x 轴正向,垂直方向从上到下为y轴正向。
turbo c的图形函数都是相对于图形屏幕坐标,即象元来说的。
关于点的另外一个函数是:
int far getpixel(int x, int y);
它获得当前点(x, y)的颜色值。
ii、有关坐标位置的函数
int far getmaxx(void);
返回x轴的最大值。
int far getmaxy(void);
返回y轴的最大值。
int far getx(void);
返回游标在x轴的位置。
void far gety(void);
返回游标有y轴的位置。
void far moveto(int x, int y);
移动游标到(x, y)点,不是画点,在移动过程中亦画点。
void far moverel(int dx, int dy);
移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置,移动过程中不画点。
、画线。i. 画线函数。
turbo c提供了一系列画线函数:
void far line(int x0, int y0, int x1, int y1);
画一条从点(x0, y0)到(x1, y1)的直线。
void far lineto(int x, int y);
画一作从现行游标到点(x, y)的直线。
void far linerel(int dx, int dy);
画一条从现行游标(x,y)到按相对增量确定的点(x+dx, y+dy)的直线。
void far circle(int x, int y, int radius);
以(x, y)为圆心,radius为半径,画一个圆。
void far arc(int x, int y, int stangle, int endangle,int radius);
以(x,y)为圆心,radius为半径,从stangle开始到endangle结束(用度表示)画一段圆弧线。
在turbo c中规定x轴正向为0 度,逆时针方向旋转一周, 依次为90,180, 270和360度(其它有关函数也按此规定,不再重述)。
void ellipse(int x, int y, int stangle, int endangle,int xradius,int yradius);
以(x, y)为中心,xradius,yradius为x轴和y轴半径,从角stangle 开始到endangle结束画一段椭圆线,当stangle=0,endangle=360时, 画出一个完整的椭圆。
void far rectangle(int x1, int y1, int x2, inty2);
以(x1, y1)为左上角,(x2, y2)为右下角画一个矩形框。
void far drawpoly(int numpoints, int far *polypoints);
画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。polypoints整型数组必须至少有2 倍顶点数个无素。每一个顶点的坐标都定义为x,y,并且x在前。
值得注意的是当画一个封闭的多边形时,numpoints 的值取实际多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。
下面举一个用drawpoly()函数画箭头的例子。
C语言图形模式速成
第一节图形模式的初始化。turbo c 提供了非常丰富的图形函数,所有图形函数的原型均在graphics.h 中,本节主要介绍图形模式的初始化 独立图形程序的建立 基本图形功能 图形窗口以及图形模式下的文本输出等函数。另外,使用图形函数时要确保有显示器图形驱动程序 bgi,同时将集成开发环境opti...
c语言试卷c
a.p q c.p n1 10 若有说明语句 int a,b,c,d c 则能从键盘读入三个整数分别赋给变量a b c的语句是。a.scanf d d d a,b,d b.scanf d d d a,b,d c.scanf d d d a,b,dd.scanf d d d a,b,d 11 c语言标...
C语言C模拟试卷
一 选择题 共40分 1 下列运算符中优先级最高的是 2分 ab cd 2 若x,i和j都是整型变量,则计算x i 6,j 40 表达式后,x的值为 2分 a 6 b 46 c 34 d 40 3 以下叙述正确的是 2分 a 在c程序中,main函数必须位于程序的最前面。b c程序的每一行中只能写一...