专栏首页IT技术圈(CSDN)史上最详细版 头文件biso.h,graphics.h,libbgi.a

史上最详细版 头文件biso.h,graphics.h,libbgi.a

注:此内容是对百度百科和其它网站资料的总结,详情请看百度百科

载地址: 下点击这里 更多资源等你来发现。。。。。

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

#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

#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

#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

int xasp,yasp;
float aspectratio;
getaspectratio(&xasp,&yasp);
aspectratio=xasp/yasp;
printf("aspect ratio: %f",aspectratio);

例 2.4-2

//画六个同心圆,圆心在(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

#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

//画一个椭圆
#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

//画一填充椭圆
#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

//显示一个扇形图,每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

//画出两个椭圆扇区:
#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

//画圆心在(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

//用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

//建立一个用户填充图样,并用它填充一个矩形
#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

//用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

//用红色间隔点填充一个正方形:
#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

//显示组成当前用户填充图样的各字节内容:
#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文件链成一个可执行文件。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 可移植的 Makefile 教程

    在我写 Makefile 的头 10 年里,我养成了一个非常不好的习惯 -- 完全严格使用 GNU Make 的扩展名。过去我并不知道, GNU Make 与...

    用户1558438
  • VS 2010 OpenGL 配置与实例开发

    首先参考了网上的安装配置环境部分:http://blog.csdn.net/Ididcan/article/details/4490797

    用户4645519
  • [系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏...

    Eastmount
  • Android 11 最终 Beta 版发布,正式版即将到来!

    随着 8 月的到来,Android 11 的正式版已经呼之欲出!我们正在为新平台做最后的微调。今年预览周期 的最后一次更新——Beta 3,已经正式发布。对于开...

    Android 开发者
  • maven项目引入本地jar包史上最详细实践方法

    依次打开IDEA的File – Project Structure – Project Settings – Modules –

    用户5546570
  • 【共读】Linux网络安全精要之基础知识

    理解什么是Linux的发行版,然后选择适合自己的版本,掌握安装Linux的步骤,建立对Linux的确切认识。

    用户8611941
  • [开源]基于Qt的新冠肺炎疫情数据实时监控平台1.1版本

    上一篇文章我用Qt做了个疫情数据实时监控平台,介绍了实现思路和简单过程,主要包括数据接口的获取和Qt的开发,这两天修复一些BUG,完善了部分功能,如下:

    单片机点灯小能手
  • Sony IPELA E 系列网络摄像头远程命令执行漏洞预警

    索尼[1]是世界视听、电子游戏、通讯产品和信息技术等领域的先导者,是世界最早便携式数码产品的开创者,是世界最大的电子产品制造商之一。

    Seebug漏洞平台
  • Git教程

    文章来自https://www.cnblogs.com/best/p/7474442.html

    黄啊码
  • C#开发BIMFACE系列48 Nginx部署并加载离线数据包

    在前一篇博客《C#开发BIMFACE系列47 IIS部署并加载离线数据包》中详细介绍了IIS部署并访问的完整步骤。本篇博客详细介绍在Nginx服务器中如何部署并...

    张传宁IT讲堂
  • 发布TS类型文件到npm

    TS类型文件的包名通常以@types开头,使用npm publish发布以@types开头的包时需要使用付费账号。

    雪飞鸿
  • 测开必备技能--docker常用命令操作

    在上篇文章,我们对dokcer的环境搭建做了讲解,传送门:测开必备技能--docker环境搭建

    雷子
  • Java学习笔记_零基础系列(二)常用的DOS命令(续)

    del *.class 这个命令中的那个“.”不要特殊化,这个“.”其实就是一个普通的字母

    牛仔码农
  • 世界图书日|看看你的书单还缺哪本书

    “读史使人明智,读诗使人灵秀,数学使人周密,科学使人深刻,伦理学使人庄重,逻辑修辞使人善辩,凡有所学,皆成性格。 ——培根”

    安恒信息
  • 超详细!手把手带你快速入门 GitHub!

    GitHub在程序开发领域家喻户晓,现在几乎整个互联网的开发者都将版本管理工具GitHub作为版本控制的首选,甚至像笔者这样非开发者,一名和每天和数据打交道的人...

    杰哥的IT之旅
  • 一份简简单单的git命令手册(附带备忘清单)

    转载自:https://segmentfault.com/a/1190000022491558

    落落落洛克
  • Git怎么用?这篇"保姆级"教程才是yyds!跟着做就行啦

    Git的安装链接如下: https://git-scm.com/ 我们点击download就可以了

    浩说编程
  • 如何查找SAP Fiori UI上某个字段对应的底层数据库表

    我国古代,形容一个人武艺全面,会说他/她“十八般兵器样样精通”。所谓十八般兵器(有时也称十八般武艺),即刀、枪、剑、戟、斧、钺、钩、叉、鞭、锏、锤、抓、镋、棍、...

    Jerry Wang
  • 大牛总结的 Git 使用技巧,写得太好了!

    本文是参考廖雪峰老师的Git资料再加上我自己对Git的理解,记录我的Git学习历程,作下此文是为以后学习,工作,开发中如果遇到问题可以回过头来参考参考。因为水平...

    Java技术栈

扫码关注云+社区

领取腾讯云代金券