C语言图形模式速成

发布 2021-03-06 07:24:28 阅读 3294

常华。第一节图形模式的初始化。

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程序的每一行中只能写一...