天天看點

史上最詳細版 頭檔案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 用背景色填充區域(空填)
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檔案鍊成一個可執行檔案。