注:此内容是对百度百科和其它网站资料的总结,详情请看百度百科
载地址: 下点击这里 更多资源等你来发现。。。。。
1.头文件 biso.h
BIOS.h是C语言里的一些头文件,包含了很多通用的函数和端口的定义,是为了让你在编写程序的时候方便调用的,在编译的时候会参与编译。
2.头文件 graphics.h
是TC的针对DOS下的一个C语言图形库,如果要用的话应该用TC的编译器来编译,VC 环境有其它的针对windows的图形库。分为:像素函数、直线和线型函数、多边形函数、曲线函数、填充函数等。
2.1 像素函数
分类 | 功能 | 用法 | 说明 | 返回值 | 例题 |
---|---|---|---|---|---|
putpixel() 画像素点函数 | 函数putpixel() 在图形模式下屏幕上画一个像素点 | 函数调用方式为void putpixel(int x,int y,int color); | 参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值 | 无 | 例:在屏幕上(6,8)处画一个红色像素点:putpixel(6,8,RED); |
getpixel()返回像素色函数 | 函数getpixel()返回像素点颜色值 | 该函数调用方式为int getpixel(int x,int y); | 参数x,y为像素点坐标 | 返回一个像素点色彩值 | 例:把屏幕上(8,6)点的像素颜色值赋给变量color。int color = getpixel(8,6); |
2.2 直线和线型函数
分类 | 功能 | 用法 | 说明 | 返回值 |
---|---|---|---|---|
line() 画线函数 | 函数line()使用当前绘图色、线型及线宽,在给定的两点间画一直线 | 该函数调用方式为void line(int startx,int starty,int endx,int endy); | 参数startx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图形状态下屏幕光标(一般不可见)当前位置不改变。 | 无 |
lineto() 画线函数 | 函数lineto()使用当前绘图色、线型及线宽,从当前位置画一直线到指定位置 | 此函数调用方式为void lineto(int x,int y); | 参数x,y为指定点的坐标,函数调用后,当前位置改变到指定点(x,y) | 无 |
linerel() 相对画线函数 | 函数linerel() 使用当前绘图色、线型及线宽,从当前位置开始,按指定的水平和垂直偏移距离画一直线 | 这个函数调用方式为voidlinerel(int dx,int dy); | 参数dx,dy分别是水平偏移距离和垂直偏移距离 | 无 |
setlinestyle() 设置线型函数 | setlinestyle() 为画线函数设置当前线型,包括线型、线图样和线宽 | setlinestyle()函数调用方式为void setlinestyle(int stly,unsigned pattern,int wigth); | 参数style为线型取值,也可以用相应名称表示 | 无 |
getlinesettings() 获取线型设置函数 | 函数getlinesettings() 用当前设置的线型、线图样和线宽填 写linesettingstype型结构 | 函数调用方式为voidgetlinesettings(struct linesettingstype *info); | 此函数调用执行后,当前的线型、线图样和线宽值被装入info指向的结构体里,从而可从该结构体中获得线型设置 | 返回的线型设置存放在info指向的结构中 |
setwritemode() 设置画线模式函数 | 函数setwritemode() 设置画线模式 | 函数调用方式为 voidsetwritemode()(int mode); | 参数mode只有两个取值0和1,若mode为0,则新画的线将覆盖屏幕上原有的图形,此为缺省画线输出模式 | 无 |
2.3 多边形函数
分类 | 功能 | 用法 | 说明 | 返回值 | 例题 |
---|---|---|---|---|---|
rectangle()画矩形函数 | 函数rectangle()用当前绘图色、线型及线宽,画一个给定左上角与右下角的矩形(正方形或长方形) | 此函数调用方式为void rectangle(int left,int top,int right,int bottom); | 参数left,top是左上角点坐标,right,bottom是右下角点坐标 | 无 | 见例 2.3-1 |
bar() 画条函数 | 函数bar()用当前填充图样和填充色(注意不是给图色)画出一个指定上左上角与右下角的实心长条形(长方块或正方块),但没有四条边线) | bar()函数调用方式为void bar(int left,int top,int right,int bottom); | 参数left,topright,bottom分别为左上角坐标与右下角坐标 | 无 | 见例 2.3-2 |
bar3d() 画条块函数 | 函数bar3d() 使用当前绘图色、线型及线宽画出三维长方形条块,并用当前填充图样和填 充色填充该三维条块的表面 | 此函数调用方式为voidbar3d(int left,int top,int right,int bottom,int depth,int topflag); | 参数left,top,right,bottom分另为左上角与右下角坐标,这与bar()函数中的一样 | 无 | 见例 2.3-2 |
drawpoly() 画多边形函数 | 函数drawpoly() 用当前绘图色、线型及线宽,画一个给定若干点所定义的多边形 | 此函数调用方式为voiddrawpoly(int pnumber,int *points); | 参数pnumber为多边形的顶点数;参数points指向整型数组,该数组中是多边形所有顶点(x,y)坐标值,即一系列整数对,x坐标值在前 | 无 | 见例 2.3-3 |
例 2.3-1
代码语言:javascript复制#include <graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
rectangle(80,80,220,200);
rectangle(140,99,180,300);
rectangle(6,6,88,88);
rectangle(168,72,260,360);
getchar();
restorecrtmode();
}
例 2.3-2
代码语言:javascript复制#include<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
setfillstyle(SOLID-FILL,GREEN);
bar(60,80,220,160);
setfillstyle(SOLID-FILL,RED);
bar3d(260,180,360,240,20,1);
getch();
restorecrtmode();
}
例 2.3-3
代码语言:javascript复制#include<graphics.h>
void main()
{
int driver,mode;
static int polypoints1[18]={100,100,110,120,100,130,120,125,140,140,130,120,
140,110,120,115,100,100};
static int polypoints2[18]={180,100,210,120,200,130,220,125,240,140,230,120,
240,110,220,115,220,110};
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
drawpoly(9,polypoints1);
drawpoly(9,polypoints2);
getch();
restorecrtmode();
}
2.4 曲线函数
分类 | 功能 | 用法 | 说明 | 返回值 | 例题 |
---|---|---|---|---|---|
getaspectratio()获取纵横比函数 | 函数getaspectratio()返回x方向和y方向的比例系数,用这两个整型值可计算某一特定屏显的纵横比 | 此函数调用方式为voidgetaspectratio(int xasp,int yasp); | 参数xasp指向的变量存放返回的x方向比例系数;参数yasp指向的变量存放返回的y方向比例系数 | 返回x与y方向比例系数分别存放在xasp和yasp所指向的变量中 | 见例 2.4-1 |
circle()画圆函数 | 函数circle()使用当前绘图色并以实线画一个完整的圆 | 该函数调用方式为void circle(int x,int y,int radius); | 参数x,y为圆心坐标,radius为圆半径,用像素个素表示 | 无 | 见例 2.4-2 |
arc() 画圆弧函数 | 函数arc()使用当前绘图色并以实线画一圆弧 | 函数调用方式为void arc(int x,int y,int startangle,int endangle,int radius); | 参数x,y为圆心坐标,startangle与endangle分别为起始角与终止角,radius为半径 | 无 | 见例 2.4-3 |
ellipse()画椭圆弧函数 | 函数ellipse()使用当前绘图色画一椭圆弧 | 该函数调用方式为void ellipse(int x,int y,int startangle,int endangle, int xradius,int yradius); | 参数x,y为椭圆中心坐标,startangle和endangle为给定的起始角和终止角,xradius与yradius为椭圆的x轴半径与y轴半径,如果startangle为0 ,endangle等于360度,那么画出的是个完整的椭圆 | 无 | 见例 2.4-4 |
fillellipse() 画椭圆区函数 | 函数fillellipse()使用当前绘图色画一椭圆,然后用当前填充色图样和填充色填充所画的椭圆 | 此函数调用方式为void fillellipse(int x,int y,int xradius,int yradius); | 参数x,y为椭圆中心坐标,xradius,yradius为水平轴半径和垂直轴半径 | 无 | 见例 2.4-5 |
pieslice() 画扇区函数 | 函数pieslice()使用当前绘图色画一圆弧,并把弧两端与圆心分别连一直线段(即半径),然后用当前填图样和填充色进行填充,即得扇区 | 这个函数调用方式为void pieslice(int x,int y,int startangle,int endangle,int radius); | 函数pieslice()的操作类似于arc()函数(即同调用参数一样,只是函数名不同),因此调用此函数的详细说明参见函数arc()的相应内容。该函数对屏显纵横比能自动调节进行补偿 | 无 | 见例 2.4-6 |
sector() 画椭圆扇区函数 | 函数sector()先用当前绘图色画椭圆扇形轮廓,然后用当前填充图样和填充色进行填充,即得椭圆扇区 | 该函数调用方式为void sector(int x,int y,int startangle,int endangle,int xradius,int yradius); | 参数x,y为椭圆中心坐标,startangle和endangle为起始角与终止角,xradius与yradius是水平轴半径和垂直轴半径即长短轴 | 无 | 见例 2.4-7 |
getarccoords()获取圆弧坐标函数 | 函数getarccoords()将最后一次调用arc()或ellipse()画的圆弧或椭圆弧的起终点坐标和中心坐标填入arccoordstype型结构里,进而从该结构中获取这些坐标值 | getarccoords()函数调用方式为void getarccoords(struct arccoordstype *coordsp); | 调用此函数填写coordsp指向的结构,从而获得起终点坐标和中心坐标值。它们可用于画弦、半径以及其它与圆弧端点相连的直线等 | 无 | 见例 2.4-8 |
注:以下其它函数详情请看百度百科
例 2.4-1
代码语言:javascript复制int xasp,yasp;
float aspectratio;
getaspectratio(&xasp,&yasp);
aspectratio=xasp/yasp;
printf("aspect ratio: %f",aspectratio);
例 2.4-2
代码语言:javascript复制//画六个同心圆,圆心在(100,100)
#include<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
circle(100,100,10);
circle(100,100,20);
circle(100,100,30);
circle(100,100,40);
circle(100,100,50);
circle(100,100,60);
getch();
restorecrtmode();
}
例 2.4-3
代码语言:javascript复制#i nclude<graphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
setcolor(WHITE);
arc(200,200,0,120,100);
getch();
restorecrtmode();
}
例 2.4-4
代码语言:javascript复制//画一个椭圆
#include<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
ellipse(200,100,0,360,80,40);
getch();
restorecrtmode();
}
例 2.4-5
代码语言:javascript复制//画一填充椭圆
#include<graphics.h>
#include<stdio.h>
#define R 60
void main()
{
int driver,mode;
int xasp,yasp;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
fillellipse(getmaxx()/2,getmaxy()/2,66,44);
getaspectratio(&xasp,&yasp);
fillellipse(R,R,R,R*(long)xasp/(long)yasp);
getch();
closegraph();
}
例 2.4-6
代码语言:javascript复制//显示一个扇形图,每45度为一个不同的扇区
#include<graphics.h>
void main()
{
int driver,mode;
int i,start,end;
driver=DETECT;
mode=0;
initgraph(&driver,mode,"");
start=0;
end=45;
for(i=0;i<8;i )
{
setfillstyle(SOLID_FILL,i);
pieslice(260,200,start,end,100);
start =45;
end =45;
}
getch();
restorecrtmode();
}
例 2.4-7
代码语言:javascript复制//画出两个椭圆扇区:
#include<graphics.h>
#include<stdio.h>
#define R 80
void main()
{
int driver,mode;
int xasp,yasp;
initgraph(&driver,&mode,"");
sector(getmaxx()/2,getmaxy()/2,0,656,R,R);
getaspectratio(&xasp,&yasp);
setctor(getmaxx()/2,getmaxy()/2,180,135,R,R*(long)xasp/(long)yasp);
getch();
closegraph();
}
例 2.4-8
代码语言:javascript复制//画圆心在(100,100)的四分之一圆弧,然后于弧两端点之间连一直线
#include<graphics.h>
//arccoordstype型结构定义如下:
struct arccoordstype {
int x,y;
int xstart,ystart,xend,yend;
};
// 其中,x,y存放中心坐标;xstart,ystart,xend,yend分别存放起终点坐标。
void main()
{
int driver,mode;
struct arccoordstype arcinfo;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
arc(100,100,0,90,88);
getarccoords(&arcinfo);
line(arcinfo.xstart,arcinfo.ystart,arcinfo.xend,arcinfo.yend);
getch();
restorecrtmode();
}
2.5 填充函数等
分类 | 功能 | 用法 | 说明 | 返回值 | 例题 |
---|---|---|---|---|---|
setfillstyle() 设置填充图样和颜色函数 | 函数setfillstyle()为各种图形函数设置填充图样和颜色 | 函数调用方式为void setfillstyle(int pattern,int color); | 参数pattern的值为填充图样,它们在头文件graphics.h中定义,详见表2.5-1所示。参数color的值是填充色,它必须为当前显示模式所支持的有效值。填充图样与填充色是独立的,可以是不同的值。 | 无 | 见例 2.5-1 |
setfillpattern() 设置用户图样函数 | 函数setfillpattern() 设置用户的填充图样以供fllodfill(),fillpoly()填充函数等使用 | 此函数调用方式为void setfillpattern(char *pattern,int color); | 参数color设置填充图样的颜色。参数pattern指向一字符数组,该数组至少8个字节长,它定义了一个8像素*8像素的用户填充图样 | 无 | 见例 2.5-2 |
floodfill() 填充闭域函数 | 函数floodfill()用当前填充图样和填充色填充一个由特定边界颜色(通常是当前绘图色)定义的有界封闭区域 | 该函数调用方式为void floodfill(int x,int y,int bordercolor); | 这里参数(x,y)为指定填充区域中的某点,如果点(x,y)在该填充区域之外,那么外部区域将被填充,但受图形视口边界的限制。如果直线定义的区域出现间断,那么将导致泄漏,即使很小的间断,也将导致泄漏。也就是说,间断将引起区域外被填充。 | 无 | 见例 2.5-3 |
fillpoly() 填充多边形函数 | 函数fillpoly()用当前绘图色、线型及线宽画出给定点的多边形,然后用当前填充图样和填充色填充这个多边形 | 此函数调用方式为void fillpoly(int pointnum,int *points); | fillpoly()的调用形式与drawpoly()的一样,其参数含义相同。该函数中pointnum为所填充多边形的顶点数,points指向存放所有顶点坐标的整型数组 | 无 | 见例 2.5-4 |
getfillsettings() 获取填充设置函数 | 函数getfillsettings()将当前填充图样值(符号名或等价值)和填充颜色值(符号名或等价值)填入fillsettingstyle型结构里,从而从该结构中获得当前填充设置(填充图样和填充色) | 这个函数调用方式为void getfillsettings(struct fillsettingstype *info); | 函数里fillsettingstype 型结构定义如下:struct fillsettingstype { int pattern;int color; }; | 返回当前填充图样和填充色的值,并装入info指向的结构里 | |
getfillpattern() 获取用户图样设置函数 | 函数getfillpattern()返回上一次调用setfillpattern()设置的用户定义的填充图样 | 此函数调用方式为void getfillpattern(char *pattern); | 函数一旦调用,就会把定义当前用户填充图样的8个字节填入pattern所指向的数组,该数组必须至少8字节长,用户图样以8个8位字节的模式排列,如果还没有调用setfillpattern()设置用户定义的填充图样,那么函数将填入数组元素的值全为0xff。 | 返回用户定义填充图样的8个字节数据(注意不是填充图样元素),并存放在pattern指向的数组里 | 见例 2.5-5 |
表2.5-1 填充图样
填充图样符号名 | 取值 | 说明 |
---|---|---|
EMPTy_FILL | 0 | 用背景色填充区域(空填) |
SOLID_FILL | 1 | 用实填充色填充(实填) |
LINE_FILL | 2 | ----填充 |
LTSLASH_FILL | 3 | ///填充 |
SLASH_FILL | 4 | ///用粗线填充 |
BKSLASH_FILL | 5 | ///用粗线填充 |
LTBKSLASH_FILL | 6 | ///填充 |
HATCH_FILL | 7 | 网格线填充 |
xHATCH_FILL | 8 | 斜网格线填充 |
INTEREAVE_FILL | 9 | 间隔点填充 |
WIDE_DOT_FILL | 10 | 大间隔点填充 |
CLOSE_DOT_FILL | 11 | 小间隔点填充 |
USER_FILL | 12 | 定义图样填充 |
例 2.5-1
代码语言:javascript复制//用HATCH_FILL填充一个矩形
#include<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,mode,"");
setcolor(GREEN);
rectangle(80,200,200,300);
setfillstyle(HATCH_FILL,RED);
floodfill(160,240,GREEN);
getch();
restorecrtmode();
}
例 2.5-2
代码语言:javascript复制//建立一个用户填充图样,并用它填充一个矩形
#include<graphics.h>
void main()
{
int driver,mode;
static char p[8]={10,20,30,40,50,60,70,80};
driver=DETECT;
mode=0;
initgraph(&driver,mode,"");
setcolor(GREEN);
rectangle(80,200,220,300);
setfillpattern(p,RED);
floodfill(160,260,GREEN);
getch();
restorecrtmode();
}
例 2.5-3
代码语言:javascript复制//用floodfill() 函数填充一个具有交叉阴影线的品红色椭圆:
#include<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
ellipse(188,88,0,360,100,60);
setfillstyle(HATCH_FILL,MAGENTA);
floodfill(188,88,WHITE);
getch();
restorecrtmode();
}
例 2.5-4
代码语言:javascript复制//用红色间隔点填充一个正方形:
#include<graphics.h>
void main()
{
int driver,mode;
static int points[]={100,100,100,200,200,200,100,100};
driver=DETECT;
mode=0;
initgraph(&driver,mode,"");
setfillstyle(INTERLEAVE_FILL,RED);
fillpoly(4,points);
getch();
restorecrtmode();
}
例 2.5-5
代码语言:javascript复制//显示组成当前用户填充图样的各字节内容:
#include<graphics.h>
void main()
{
int driver,mode;
char fp[8];
int i;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
getfillpattern(fp);
for(i=0;i<8;i ) printf("%d",fp[i]);
getch();
restorecrtmode();
}
2.头文件 libbgi.a
.a文件,是LINUX系统中的静态链接库文件。所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。.so文件是共享库文件(动态链接)。动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息),仅当应用程序被装入内存开始运行时,在操作系统的管理下,才在应用程序与相应的.so之间建立链接关系。
.a文件是多个.o文件的组合。.o文件就是对象文件,里面包含的内容就是01这样的机器可执行的指令,当程序要执行时还需要进行链接(link).链接就是把多个.o文件链成一个可执行文件。