1. 利用c語言編寫 能夠畫出任意的直線演算法程序(利用畫點函數)
上次剛寫過,在VC下運行的,
int dx,dy,incrE,incrNE,d,x,y;
if ((point[1].x-point[0].x)==0){ //垂直的直線
x=point[0].x;
for(y=point[0].y;y<point[1].y;y++)
pDC->SetPixel(x,y,50);
}
else if(abs((point[1].y-point[0].y)/(point[1].x-point[0].x))<=1){ //斜率 -1到 1 之間
dx=point[1].x-point[0].x;
dy=point[0].y-point[1].y;
d=dx-2*dy;
incrE=-2*dy;
incrNE=2*(dx-dy);
x=point[0].x,y=point[0].y;
pDC->SetPixel(x,y,50);
if(point[0].y>point[1].y){
while(x<point[1].x)
{
if(d>=0){
d+=incrE;
x++;
}
else
{d+=incrNE;
x++;
y--;
}
pDC->SetPixel(x,y,50);
}
}
else if(point[0].y<=point[1].y){
dy=point[1].y-point[0].y;
incrE=-2*dy;
incrNE=2*(dx-dy);
x=point[0].x,y=point[0].y;
pDC->SetPixel(x,y,50);
while(x<point[1].x)
{
if(d>=0){
d+=incrE;
x++;
}
else
{d+=incrNE;
x++;
y++;
}
pDC->SetPixel(x,y,50);
}
}
}
else { //斜率 <-1 和 >1的直線
if(point[1].x>=point[0].x){
dx=point[1].x-point[0].x;
dy=point[1].y-point[0].y;
d=2*dx-dy;
incrE=2*dx;
incrNE=2*(dx-dy);
x=point[0].x,y=point[0].y;
pDC->SetPixel(x,y,50);
while(x<point[1].x)
{
if(d<0){
d+=incrE;
y++;
}
else
{d+=incrNE;
pDC->SetPixel(x,y,50);
x++;
y++;
}
pDC->SetPixel(x,y,50);
}
}
else if((point[1].y-point[0].y)/(point[1].x-point[0].x)<-1){
dx=point[1].x-point[0].x;
dy=point[0].y-point[1].y;
d=2*dx-dy;
incrE=2*dx;
incrNE=2*(dx-dy);
x=point[0].x,y=point[0].y;
pDC->SetPixel(x,y,50);
while(y<point[1].y)
{
if(d>0){
d+=incrE;
y++;
}
else
{d+=incrNE;
x--;
y++;
}
pDC->SetPixel(x,y,50);
}
}
}
2. C語言sqrt()的用法
C語言中sqrt函數的使用方法:
C語言中sqrt函數是指的開方運算函數,得到的結果是函數變數(可以是數值,也可以是變數名)的算術平方根。在VC6.0中的math.h頭文件的函數原型為doublesqrt(double)。
說明:sqrt系SquareRootCalculations(平方根計算),通過這種運算可以考驗CPU的浮點能力。
程序例:
#include
#include
intmain(void)
{
doublex=4.0,result;
result=sqrt(x);//result*result=x
printf(「Thesquarerootof%fis%f 」,x,result);
return0;
}
VC2008後為重載函數,原型為floatsqrt(float),doublesqrt(double),doublelongsqrt(doublelong)
注意沒有sqrt(int),但是返回值可以為int。
注意事項:
1.sqrt函數運行的結果是算術平方根,即不能運算出負數值,也不能輸出虛數結果。如需要得到算術平方根中的負數值,則應該在sqrt函數前添加負號。
2.sqrt函數的參數必須是非負數值,如果是負數值,則輸出會報錯,即數值無效;如果參數是未定義的非數字變數,則按回車後也會報錯,即變數名有誤。
3.sqrt函數的計算精度與C語言設置的精度有關,可以通過設置更改精度。
3. 用C語言二維數組怎麼寫連接的幾個線段及其顏色函數
在形參是數組的情況下,只要是數組,無論維數,實際上在調用函數時,傳給函數的將是一個數組的首地址,以及維數等相關信息
也就是說,在函數執行過程中,並不會新開辟內存空間,而是形參實參共用同一段內存空間
所以,在這種情況下,函數內部對數組進行修改,其值會返回給實參
你的例子中調用部分有問題,不能這樣
shuru(a[10][2])
而是
shuru(a)
因為a[10][2]代表數組a中的一個元素,而且是越界的
而a才是數組名
4. c語言中line函數內的參數的含義
line(x1,y1,x2,y2);其中兩個數為一個坐標,表示從(x1,y1)畫線到(x2,y2)
5. C語言中有沒有繪圖的函數庫裡面每個函數的內容和用法是什麼
圖形和圖像函數包含在graphics.h裡面
(一) 像素函數
56. putpiel() 畫像素點函數
57. getpixel()返回像素色函數
(二) 直線和線型函數
58. line() 畫線函數
59. lineto() 畫線函數
60. linerel() 相對畫線函數
61. setlinestyle() 設置線型函數
62. getlinesettings() 獲取線型設置函數
63. setwritemode() 設置畫線模式函數
(三)、多邊形函數
64. rectangle() 畫矩形函數
65. bar() 畫條函數
66. bar3d() 畫條塊函數
67. drawpoly() 畫多邊形函數
(四)、 圓、弧和曲線函數
68. getaspectratio()獲取縱橫比函數
69. circle()畫圓函數
70. arc() 畫圓弧函數
71. ellipse()畫橢圓弧函數
72. fillellipse() 畫橢圓區函數
73. pieslice() 畫扇區函數
74. sector() 畫橢圓扇區函數
75. getarccoords()獲取圓弧坐標函數
(五)、 填充函數
76. setfillstyle() 設置填充圖樣和顏色函數
77. setfillpattern() 設置用戶圖樣函數
78. floodfill() 填充閉域函數
79. fillpoly() 填充多邊形函數
80. getfillsettings() 獲取填充設置函數
81. getfillpattern() 獲取用戶圖樣設置函數
(六)、圖像函數
82. imagesize() 圖像存儲大小函數
83. getimage() 保存圖像函數
84. putimage() 輸出圖像函數
四、圖形和圖像函數
對許多圖形應用程序,直線和曲線是非常有用的。但對有些圖形只能靠操作單個像素才能畫出。當然如果沒有畫像素的功能,就無法操作直線和曲線的函數。而且通過大規模使用像素功能,整個圖形就可以保存、寫、擦除和與屏幕上的原有圖形進行疊加。
(一) 像素函數
56. putpixel() 畫像素點函數
功能: 函數putpixel() 在圖形模式下屏幕上畫一個像素點。
用法: 函數調用方式為void putpixel(int x,int y,int color);
說明: 參數x,y為像素點的坐標,color是該像素點的顏色,它可以是顏色符號名,也可以是整型色彩值。
此函數相應的頭文件是graphics.h
返回值: 無
例: 在屏幕上(6,8)處畫一個紅色像素點:
putpixel(6,8,RED);
57. getpixel()返回像素色函數
功能: 函數getpixel()返回像素點顏色值。
用法: 該函數調用方式為int getpixel(int x,int y);
說明: 參數x,y為像素點坐標。
函數的返回值可以不反映實際彩色值,這取決於調色板的設置情況(參見setpalette()函數)。
這個函數相應的頭文件為graphics.h
返回值: 返回一個像素點色彩值。
例: 把屏幕上(8,6)點的像素顏色值賦給變數color。
color=getpixel(8,6);
(二) 直線和線型函數
有三個畫直線的函數,即line(),lineto(),linerel()。這些直線使用整型坐標,並相對於當前圖形視口,但不一定受視口限制,如果視口裁剪標志clip為真,那麼直線將受到視口邊緣截斷;如果clip為假,即使終點坐標或新的當前位置在圖形視口或屏幕極限之外,直線截斷到屏幕極限。
有兩種線寬及幾種線型可供選擇,也可以自己定義線圖樣。下面分別介紹直線和線型函數。
58. line() 畫線函數
功能: 函數line()使用當前繪圖色、線型及線寬,在給定的兩點間畫一直線。
用法: 該函數調用方式為void line(int startx,int starty,int endx,int endy);
說明: 參數startx,starty為起點坐標,endx,endy為終點坐標,函數調用前後,圖形狀態下屏幕游標(一般不可見)當前位置不改變。
此函數相應的頭文件為graphics.h
返回值: 無
例: 見函數60.linerel()中的實例。
59. lineto() 畫線函數
功能: 函數lineto()使用當前繪圖色、線型及線寬,從當前位置畫一直線到指定位置。
用法: 此函數調用方式為void lineto(int x,int y);
說明: 參數x,y為指定點的坐標,函數調用後,當前位置改變到指定點(x,y)。
該函數對應的頭文件為graphics.h
返回值: 無
例: 見函數60.linerel()中的實例。
60.linerel() 相對畫線函數
功能: 函數linerel() 使用當前繪圖色、線型及線寬,從當前位置開始,按指定的水平和垂直偏移距離畫一直線。
用法: 這個函數調用方式為void linerel(int dx,int dy);
說明: 參數dx,dy分別是水平偏移距離和垂直偏移距離。
函數調用後,當前位置變為增加偏移距離後的位置,例如,原來的位置是(8,6),調用函數linerel(10,18)後,當前位置為(18,24)。
返回值:無
例: 下面的程序為畫線函數調用實例:
#i nclude<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
setcolor(15);
line(66,66,88,88);
lineto(100,100);
linerel(36,64);
getch();
restorecrtmode();
}
61. setlinestyle() 設置線型函數
功能: setlinestyle() 為畫線函數設置當前線型,包括線型、線圖樣和線寬。
用法: setlinestyle() 函數調用方式為void setlinestyle(int stly,unsigned pattern,int width);
說明: 參數style為線型取值,也可以用相應名稱表示,如表1-10中所示。
參數pattern用於自定義線圖樣,它是16位(bit)字,只有當style=USERBIT_LINE(值為1)時,pattern的值才有意義,使用用戶自定義線圖樣,與圖樣中「1」位對應的像素顯示,因此,pattern=0xFFFF,則畫實線;pattern=0x9999,則畫每隔兩個像素交替顯示的虛線,如果要畫長虛線,那麼pattern的值可為0xFF00和0xF00F,當style不為USERBIT_LINE值時,雖然pattern的值不起作用,但扔須為它提供一個值,一般取為0。
參數wigth用來設定線寬,其取值見表1-11,表中給出了兩個值,即1和3,實際上,線寬取值為2也是可以接受的。
若用非法參數調用setlinestyle()函數,那麼graphresult()會返回錯誤代碼,並且當前線型繼續有效。
Turbo C提供的線型與線寬定義在頭文件graphics.h中,表1-10和1-11分別列出了參數的取值與含義。
表1-10 線型
-----------------------------------------------------
名 稱 取 值 含 義
-----------------------------------------------------
SOLID_LINE 0 實線
DOTTED_LINE 1 點線
CNTER_LINE 2 中心線
DASHED_LINE 3 虛線
USERBIT_LINE 4 用戶自定義線型
-----------------------------------------------------
表1-11 線寬
-----------------------------------------------------------
名 稱 取 值 說 明
-----------------------------------------------------------
NORM_WIDTH(常寬) 1 一個像素寬(預設值)
THICK_WIDTH(加寬) 3 三個像素寬
-----------------------------------------------------------
這個函數的頭文件是graphics.h
返回值: 無
例: 下面的程序顯示了BC中所提供的線型圖樣:
#i nclude<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
for(i=0;i<4;i++)
{
setlinestyle(i,0,1);
line(i*50,200,i*50+60,200)
}
getch();
restorecrtmode();
}
62. getlinesettings() 獲取線型設置函數
功能: 函數getlinesettings() 用當前設置的線型、線圖樣和線寬填 寫linesettingstype型結構。
用法: 函數調用方式為void getlinesettings(struct linesettingstype *info);
說明: 此函數調用執行後,當前的線型、線圖樣和線寬值被裝入info指向的結構里,從而可從該結構中獲得線型設置。
linesettingstype型結構定義如下:
struct linesettingstype {
int linestyle;
unsigned upattern;
int thickness;
};
其中linestyle用於存放線型,線型值為表1-10中的各值之一。
upattern用為裝入用戶自定義線圖樣,這是16位字,每一位等於一個像素,如果哪個位被設置,那麼該像素打開,否則關閉。
thickness為線寬值存放的變數,可參見表1-11。
getlinesettings()函數對應的頭文件為graphics.h
返回值: 返回的線型設置存放在info指向的結構中。
例: 把當前線型的設置寫入info結構:
struct linesettingstype info;
getlinesettings(&info);
63.setwritemode() 設置畫線模式函數
功能: 函數setwritemode() 設置畫線模式
用法: 函數調用方式為 void setwritemode()(int mode);
說明: 參數mode只有兩個取值0和1,若mode為0,則新畫的線將復蓋屏幕上原有的圖形,此為預設畫線輸出模式。如果mode為1,那麼新畫的像素點與原有圖形的像素點先進行異或(XOR)運算,然後輸出到屏幕上,使用這種畫線輸出模式,第二次畫同一圖形時,將擦除該圖形。調用setwritemode()設置的畫線輸出模式隻影響函數line(),lineto(),linerel(),recangle()和drawpoly()。
setwritemode()函數對應的頭文件是graphics.h
返回值: 無
例: 設置畫線輸出模式為0:
setwritemode(0);
(三)、多邊形函數
對多邊形,無疑可用畫直線函數來畫出它,但直接提供畫多邊形的函數會給用戶很大方便。最常見的多邊形有矩形、矩形塊(或稱條形)、多邊形和多邊形塊,我們還把長方形條塊也放到這里一起考慮,雖然它不是多邊形,但它的特例就是矩形(塊)。下面直接介紹畫多邊形的函數。
64. rectangle() 畫矩形函數
功能: 函數rectangle() 用當前繪圖色、線型及線寬,畫一個給定左上角與右下角的矩形(正方形或長方形)。
用法: 此函數調用方式為void rectangle(int left,int top,int right,int bottom);
說明: 參數left,top是左上角點坐標,right,bottom是右下角點坐標。如果有一個以上角點不在當前圖形視口內,且裁剪標志clip設置的是真(1),那麼調用該函數後,只有在圖形視口內的矩形部分才被畫出。
這個函數對應的頭文件為graphics.h
返回值: 無
例: 下面的程序畫一些矩形實例:
#i nclude<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgrpah(&driver,&mode,"");
rectangle(80,80,220,200);
rectangle(140,99,180,300);
rectangle(6,6,88,88);
rectangle(168,72,260,360);
getch();
restorecrtmode();
}
65. bar() 畫條函數
功能: 函數bar()用當前填充圖樣和填充色(注意不是給圖色)畫出一個指定上左上角與右下角的實心長條形(長方塊或正方塊),但沒有四條邊線)。
用法: bar()函數調用方式為void bar(int left,int top,int right,int bottom);
說明: 參數left,topright,bottom分別為左上角坐標與右下角坐標,它們和調用函數rectangle()的情形相同,調用此函數前,可用setfillstyle()或setfillpattern()設置當前填充圖樣和填充色。
注意此函數只畫沒有邊線的條形,如果要畫有邊線的的條形,可調用下面的函數bar3d()來畫,並將深度參數設為0,同時topflag參數要設置為真,否則該條形無頂邊線。
這 應的頭文件為graphics.h
返回值: 無
例: 見函數bar3d()中的實例。
66.bar3d() 畫條塊函數
功能: 函數bar3d() 使用當前繪圖色、線型及線寬畫出三維長方形條塊,並用當前填充圖樣和填 充色填充該三維條塊的表面。
用法: 此函數調用方式為void bar3d(int left,int top,int right,int bottom,int depth,int topflag);
說明: 參數left,top,right,bottom分另為左上角與右下角坐標,這與bar()函數中的一樣。參數depth為條塊的深度,以像素為單位,通常按寬度的四分之一計算。深度方向通過屏顯縱橫比調節為約45度(即這時x/y比設置為1:1)。
參數topflag相當於一個布爾參數,如果設置為1(真)那麼條塊上放一頂面;若設置為0(假),則三維條形就沒有頂面,這樣可使多個三維條形疊加在一起。
要使圖形更加美觀,可利用函數floodfill()或setfillpattern()來選擇填充圖樣和填充色(參見本小節(五)填充函數 )。
bar3d()函數對應的頭文件為graphics.h
返回值: 無
例: 下面的程序畫一個條形和條塊:
#i nclude<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();
}
67. drawpoly() 畫多邊形函數
功能: 函數drawpoly() 用當前繪圖色、線型及線寬,畫一個給定若干點所定義的多邊形。
用法: 此函數調用方式為void drawpoly(int pnumber,int *points);
說明: 參數pnumber為多邊形的頂點數;參數points指向整型數組,該數組中是多邊形所有頂點(x,y)坐標值,即一系列整數對,x坐標值在前。顯然整型數組的維數至少為頂點數的2倍,在定義了多邊形所有頂點的數組polypoints時,頂點數目可通過計算sizeof(polypoints)除以2倍的sizeof(int)得到,這里除以2倍的原因是每個頂點有兩個整數坐標值。另外有一點要注意,畫一個n個頂點的閉合圖形,頂點數必須等於n+1,並且最後一點(第n+1)點坐標必須等於第一點的坐標。
drawpoly()函數對應的頭文件為grpahics.h
返回值: 無
例: 下面的程序畫一個封閉星形圖與一個不封閉星形圖:
#i nclude<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();
}
(四)、 圓、弧和曲線函數
在一個屏幕上畫得很圓的圖形到另一個屏幕上可能被壓扁或拉長,這是因為每一種顯示卡與之相應的顯示模式都有一個縱橫比。縱橫比是指像素的水平方向大小與垂直方向大小的比值。如VGA顯示卡由於偈素基本上是正方形,所以縱橫比為1.000。
為了保證幾何圖形基本按預計情況顯示在屏幕上,用屏顯的縱橫比來計算和糾正不同硬體及顯示卡產生的畸變。計算縱橫比所需要的水平方向和垂直方向的比例系數可調用函數getaspectratio()獲得。
68. getaspectratio()獲取縱橫比函數
功能: 函數getaspectratio()返回x方向和y方向的比例系數,用這兩個整型值可計算某一特定屏顯的縱橫比。
用法: 此函數調用方式為void getaspectratio(int xasp,int yasp);
說明: 參數xasp指向的變數存放返回的x方向比例系數;參數yasp指向的變數存放返回的y方向比例系數。通常y方向比例系數為10 000, x方向比例系數不大於10 000(這是因為大多數屏幕像素高比寬長)。
注意縱橫比自動用作下面函數arc(),circle()和pieslice()中的標尺因子,使屏幕上圓或弧正常顯示。但用ellipse()函數畫橢圓必須調用本函數獲取縱橫比作為標尺因子,否則不予調整。縱橫比可用於其它幾何圖形,目的是校正和顯示圖形。
getaspectratio()函數對應的頭文件為graphics.h
返回值: 返回x與y方向比例系數分別存放在xasp和yasp所指向的變數中。
例: 下面的程序顯示縱橫比:
int xasp,yasp;
float aspectratio;
getaspectratio(&xasp,&yasp);
aspectratio=xasp/yasp;
printf("aspect ratio: %f",aspectratio);
69. circle()畫圓函數
功能: 函數circle()使用當前繪圖色並以實線畫一個完整的圓。
用法:該函數調用方式為void circle(int x,int y,int radius);
說明: 參數x,y為圓心坐標,radius為圓半徑,用像素個素表示。注意,調用circle()函數畫圓時不用當前線型。
不同於ellipse()函數,只用單個半徑radius參數調用circle()函數,故屏顯縱橫比可以自動調節,以產生正確的顯示圖。
此函數對應的頭文件為graphics.h
返回值: 無
例: 畫六個同心圓,圓心在(100,100)。
#i nclude<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();
}
70. arc() 畫圓弧函數
功能: 函數arc()使用當前繪圖色並以實線畫一圓弧。
用法: 函數調用方式為void arc(int x,int y,int startangle,int endangle,int radius);
說明: 參數x,y為圓心坐標,startangle與endangle分別為起始角與終止角,radius為半徑。圓心坐標和半徑以像素個數給出,起始角和終止角以度為單位,0度位於右邊,90度位於頂部,180度位於左邊,底部是270度。同往常一樣,360度與0度重合。角度按逆時針方向增加,但並不要求終止角一定比起始角大。例如指定300度和90度分別為起始角和終止角,與指定300度和450度分別為起始角和終止角可畫出相同的弧。大於360度可作為參數,它將被化到0度 ̄360度范圍里。函數arc()能畫封閉圓,只要取起始角為0度,終止角為360度即可。此函數中,屏顯縱橫比可自動調節。
arc()函數對應的頭文件為graphics.h
返回值: 無
例: 以(200,200)為圓心,100為半徑,從0度到120度畫圓弧:
#i nclude<graphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(&drivwer,&mode,"");
setcolor(WHITE);
arc(200,200,0,120,100);
getch();
restorecrtmode();
}
6. 求C語言的常用函數,詳細一點
C語言的常用庫函數
函數1。absread()讀磁碟絕對扇區函數
函數2。abswrite()寫磁碟絕對扇區函數
函數3。atof()將字元串轉換成浮點數的函數
函數4。atoi()將字元串轉換成整型數的函數
函數5。atol()將字元串轉換成長整型數的函數
函數6。bcd()把一個數轉換成對應的BCD碼的函數
函數7。bdos()
函數8。biosdisk()調用BIOS磁碟驅動程序函數
函數9。biosprint()調用BIOS列印機I/O介面的函數
函數10。calloc()分配內存函數
函數11。ceil()
函數12。cgets()讀字元串函數
函數13。chdir()改變當前目錄的函數
函數14。_chmod()改變文件存取許可權的函數
函數15。chmod()改變文件存取許可權的函數
函數16。clock()
函數17。close()關閉文件函數
函數18。closegraph()關閉圖形函數
函數19。cos()
函數20。ctrlbrk()設置ctrl-break處理程序的函數
函數21。delay()暫停函數
函數22。disable()屏蔽中斷的宏
函數23。enable()開硬體中斷的宏
函數24。exec()載入並運行其它程序的函數族
函數25。farcalloc()從遠堆中分配內存的函數
函數26。farfree()從遠堆中釋放一塊已分配內存的函數
函數27。farmalloc()從遠堆中分配內存的函數
函數28。farrealloc()調整遠堆中已分配塊的函數
函數29。fclose()關閉一個流函數
函數30。fcloseall()關閉打開的流的函數
函數31。feof()檢查文件是否結束的函數
函數32。fgets()從流中讀取一字元串的函數
函數33。findfirst()函數和findnext()函數
函數34。floodfill()填充區域的函數
函數35。floor()
函數36。fnmerge()建立文件路徑函數
函數37。fnsplit()分解完整的路徑名函數
函數38。fopen()打開一個流函數
函數39。FP_OFF()獲取遠地址偏移量的宏
函數40。fprintf()傳送輸出到一個流中的函數
函數41。FP_SEG()獲取遠地址段值的宏
函數42。fscanf()格式化輸入函數
函數43。fseek()移動文件指針函數
函數44。fwrite()把參數寫入流中的函數
函數45。gcvt()把雙精度數轉化成字元串的函數
函數46。geninterrupt()執行中斷函數
函數47。getc()從流中取字元的宏
函數48。getch()從鍵盤無回顯地讀取一字元的函數
函數49。getchar()從stdin流中讀取一個字元的函數
函數50。getcurdir()讀取指定驅動器的當前目錄的函數
函數61。getcwd()讀取當前目錄的函數
函數62。getdate()讀取系統日期函數
函數63。getdfree()讀取磁碟空閑空間的函數
函數64。getdisk()讀取當前磁碟驅動器號函數
函數65。getenv()讀取環境變數的當前值的函數
函數66。getimage()將指定區域的點陣圖象存入內存的函數
函數67。getmaxx()返回屏幕上最大的X坐標值的函數
函數68。getmaxy()返回屏幕上最大的Y坐標值的函數
函數69。getpixel()讀取像素顏色的函數
函數70。getpsp()
函數71。gets()從標准輸入流stdio中讀取一字元串的函數
函數72。gettime()讀取系統時間的函數
函數73。getvect()讀取中斷向量函數
函數74。getx()返回當前圖形方式下位置的X坐標值的函數
函數75。gety()返回當前圖形方式下位置的Y坐標值的函數
函數76。imagesize()返回保存圖像緩沖區大小的函數
函數77。initgraph()顯示模式控制函數(初始化圖形系統函數)
函數78。inport()從埠中讀入一個字的函數
函數79。inportb()從埠讀入一個位元組的函數
函數80。int86()執行中斷函數(調用8086軟中斷函數)
函數81。int86x()執行中斷函數 (通用8086軟中斷介面函數)
函數82。intdos()通用dos中斷介面函數
函數83。intdosx()通用dos中斷介面函數
函數84。intr()執行8086軟中斷函數(改變軟中斷介面函數)
函數85。itoa()把整形數轉換為字元串的函數
函數86。kbhit()檢查當前按下的鍵的函數
函數87。keep()駐留並退出函數
函數88。log()
函數89。log10()
函數90。_lrotl()將一個無符號長整形數左循環移位的函數
函數91。_lrotr()將一個無符號長整形數右循環移位的函數
函數92。lseek()移動文件指針函數
函數93。ltoa()把長整形數轉換為字元串的函數
函數94。malloc()分配內存函數
函數95。mkdir()創建目錄函數
函數96。mktemp()建立一個唯一的文件名的函數
函數97。MK_FP()設置一個遠指針的宏
函數98。movedata()拷貝數據函數
函數99。_open()打開一個文件進行讀寫的函數
函數100。open()打開文件進行讀寫的函數
函數101。outport()輸出一個字到埠中的函數
函數102。outportb()輸出一個位元組到埠中的函數
函數103。outtextxy()在指定位置顯示一字元串的函數
函數104。peek()返回指定內存中字的函數
函數105。peekb()返回指定內存中位元組的函數
函數106。poke()在指定的內存中存儲一個字的函數
函數107。pokeb()在指定的內存中存儲一個位元組的函數
函數108。pow()
函數109。printf()寫格式化輸出到stdout的函數
函數110。putch()向屏幕輸出字元的函數
函數111。putchar()在stdout上輸出字元的宏
函數112。putenv()將字元串放入當前環境中的函數
函數113。putimage()重新寫屏函數(輸出一個點陣圖象到圖形屏幕上的函數)
函數114。putpixel()寫像素點函數
函數115。puts()輸出一字元串到stdout(標准輸出)的函數
函數116。_read()讀文件函數
函數117。read()讀文件函數
函數118。realloc()重新分配內存函數
函數119。rectangle()畫一個矩形的函數
函數120。remove()刪除一個文件的函數
函數121。rename()文件改名函數
函數122。restorecrtmode()恢復屏幕視頻模式為調用initgraph前的設置的函數
函數123。rmdir()刪除目錄函數
函數124。_rotl()將一個無符號整形數左循環移位的函數
函數125。_rotr()將一個無符號整形數右循環移位的函數
函數126。scanf()格式化輸入函數
函數127。searchpath()按dos路徑查找一個文件的函數
函數128。segread()讀段寄存器函數
函數129。setactivepage()設置圖形輸出活動頁的函數
函數130。setcolor()設置當前要畫的線顏色的函數
函數131。setdisk()設置當前驅動器的函數
函數132。setgraphmode()將系統設置成圖形模式並清屏的函數
函數133。setlinestyle()設置當前畫線寬度和類型的函數
函數134。settextstyle()顯示字元的當前設置函數
函數135。setvect()設置中斷向量函數
函數136。setviewport()建立視口的函數
函數137。setvisualpage()設置可見的圖形頁號的函數
函數138。sin()
函數139。sprintf()格式化輸出到數組的函數
函數140。strcat()
函數141。tan()
函數142。_write()寫文件函數
函數143。write()寫文件函數
原文釋義請到網路文庫里搜尋字串「C語言常用函數」後下載
函數51-60因原注里排序號碼少編,所以只有133個常用函數。
DOC大小是119.5KB
貢獻時間:2010-09-10
貢獻者:handanlinzhang
7. c語言的圖形函數庫有哪些
圖形和圖像函數包含在graphics.h裡面
(一) 像素函數
56. putpiel() 畫像素點函數
57. getpixel()返回像素色函數
(二) 直線和線型函數
58. line() 畫線函數
59. lineto() 畫線函數
60. linerel() 相對畫線函數
61. setlinestyle() 設置線型函數
62. getlinesettings() 獲取線型設置函數
63. setwritemode() 設置畫線模式函數
(三)、多邊形函數
64. rectangle() 畫矩形函數
65. bar() 畫條函數
66. bar3d() 畫條塊函數
67. drawpoly() 畫多邊形函數
(四)、 圓、弧和曲線函數
68. getaspectratio()獲取縱橫比函數
69. circle()畫圓函數
70. arc() 畫圓弧函數
71. ellipse()畫橢圓弧函數
72. fillellipse() 畫橢圓區函數
73. pieslice() 畫扇區函數
74. sector() 畫橢圓扇區函數
75. getarccoords()獲取圓弧坐標函數
(五)、 填充函數
76. setfillstyle() 設置填充圖樣和顏色函數
77. setfillpattern() 設置用戶圖樣函數
78. floodfill() 填充閉域函數
79. fillpoly() 填充多邊形函數
80. getfillsettings() 獲取填充設置函數
81. getfillpattern() 獲取用戶圖樣設置函數
(六)、圖像函數
82. imagesize() 圖像存儲大小函數
83. getimage() 保存圖像函數
84. putimage() 輸出圖像函數
四、圖形和圖像函數
對許多圖形應用程序,直線和曲線是非常有用的。但對有些圖形只能靠操作單個像素才能畫出。當然如果沒有畫像素的功能,就無法操作直線和曲線的函數。而且通過大規模使用像素功能,整個圖形就可以保存、寫、擦除和與屏幕上的原有圖形進行疊加。
(一) 像素函數
56. putpixel() 畫像素點函數
功能: 函數putpixel() 在圖形模式下屏幕上畫一個像素點。
用法: 函數調用方式為void putpixel(int x,int y,int color);
說明: 參數x,y為像素點的坐標,color是該像素點的顏色,它可以是顏色符號名,也可以是整型色彩值。
此函數相應的頭文件是graphics.h
返回值: 無
例: 在屏幕上(6,8)處畫一個紅色像素點:
putpixel(6,8,RED);
57. getpixel()返回像素色函數
功能: 函數getpixel()返回像素點顏色值。
用法: 該函數調用方式為int getpixel(int x,int y);
說明: 參數x,y為像素點坐標。
函數的返回值可以不反映實際彩色值,這取決於調色板的設置情況(參見setpalette()函數)。
這個函數相應的頭文件為graphics.h
返回值: 返回一個像素點色彩值。
例: 把屏幕上(8,6)點的像素顏色值賦給變數color。
color=getpixel(8,6);
8. 求C語言的畫圖函數,越多越好.
http://bbs.zdnet.com.cn/thread-303145-1-1.html
II、設定線型函數
在沒有對線的特性進行設定之前,TURBO C 用其默認值,即一點寬的實線,但TURBO C 也提供了可以改變線型的函數。
線型包括:寬度和形狀。其中寬度只有兩種選擇:一點寬和三點寬。而線的形狀則有五種。
下面介紹有關線型的設置函數。
void far setlinestyle(int linestyle,unsigned upattern,int thickness); 該函數用來設置線的有關信息,其中linestyle是線形狀的規定,見下表。
有關線的形狀(linestyle)
http://bbs.zdnet.com.cn/thread-303145-1-1.html
━━━━━━━━━━━━━━━━━━━━━━━━━
符號常數 數值 含義
—————————————————————————
SOLID_LINE 0 實線
DOTTED_LINE 1 點線
CENTER_LINE 2 中心線
DASHED_LINE 3 點畫線
USERBIT_LINE 4 用戶定義線
━━━━━━━━━━━━━━━━━━━━━━━━━
thickness是線的寬度,見下表。
有關線寬(thickness)
━━━━━━━━━━━━━━━━━━━━━━━━━
符號常數 數值 含義
—————————————————————————
NORM_WIDTH 1 一點寬
THIC_WIDTH 3 三點寬
━━━━━━━━━━━━━━━━━━━━━━━━━
對於upattern,只有linestyle選USERBIT_LINE 時才有意義 (選其它線型,uppattern取0即可)。此時uppattern的16位二進制數的每一位代表一個象元,如果那位為1,則該象元打開,否則該象元關閉。
void far getlinesettings(struct linesettingstypefar *lineinfo);該函數將有關線的信息存放到由lineinfo 指向的結構中,表中linesettingstype的結構如下:
struct linesettingstype{
int linestyle;
unsigned upattern;
int thickness;
}
例如下面兩句程序可以讀出當前線的特性
struct linesettingstype *info;
getlinesettings(info);
void far setwritemode(int mode);該函數規定畫線的方式。如果mode=0,則表示畫線時將所畫位置的原來信息覆蓋了(這是TURBO C的默認方式)。如果mode=1, 則表示畫線時用現在特性的線與所畫之處原有的線進行異或(XOR)操作, 實際上畫出的線是原有線與現在規定的線進行異或後的結果。因此,當線的特性不變,進行兩次畫線操作相當於沒有畫線。
有關線型設定和畫線函數的例子如下所示。
#include<stdlib.h>
#include<graphics.h>
int main()
{
int gdriver, gmode, i;
gdriver=DETECT;
initgraph(&gdriver, &gmode, "c:\\caic\\bgi");
setbkcolor(BLUE);
cleardevice();
setcolor(GREEN);
circle(320, 240, 98);
setlinestyle(0, 0, 3); /*設置三點寬實線*/
setcolor(2);
rectangle(220, 140, 420, 340);
setcolor(WHITE);
setlinestyle(4, 0xaaaa, 1);
/*設置一點寬用戶定義線*/
line(220, 240, 420, 240);
line(320, 140, 320, 340);
getch();
closegraph();
return 0;
}
9. C語言中有什麼,函數可以劃線
函數名: line
功 能: 在指定兩點間畫一直線
用 法: void far line(int x0, int y0, int x1, int y1);
程序例:#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int xmax, ymax; /* initialize graphics and local variables */
initgraph(&gdriver, &gmode, ""); /* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s\n",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
} setcolor(getmaxcolor());
xmax = getmaxx();
ymax = getmaxy(); /* draw a diagonal line */
line(0, 0, xmax, ymax); /* clean up */
getch();
closegraph();
return 0;
}
10. 求一用C語言畫直線的程序
C語言的話畫直線用MoveTo()和LineTo()很簡單啊。
幫你復制一份我學習時老師給的畫線兩例:
#include<graphics.h>
#include<math.h>
/*
###############################################################################
功 能:本函數的作用是用逐點比較法來畫一條直線
格 式:void myline1(int x1,int y1,int x2,int y2,int color)
參數說明:x1,y1是起始點坐標,x2,y2是終止點,color是畫線的顏色
調用示例:myline1(10,20,500,440,4)
###############################################################################
*/
void myline1(int x1,int y1,int x2,int y2,int color)
{
/*變數定義開始(2007/10/16增加)*/
int iTx; /*x軸終點的相對坐標xa或臨時變數*/
int iTy; /*y軸終點的相對坐標ya或臨時變數*/
int iDx; /*x軸方向的步長dx*/
int iDy; /*y軸方向的步長dy*/
int iFt; /*偏差Fm*/
int iSt; /*記數循環數(dx+dy)S*/
int iXt; /*x方向循環變數xm*/
int iYt; /*y方向循環變數ym*/
/*變數定義結束*/
/*變數初始化開始*/
/*如果是第三象限或第四象限則換成第一或第二象限*/
if(y2<y1)
{
iTx=x1;
x1=x2;
x2=iTx;
iTy=y1;
y1=y2;
y2=iTy;
}
iTx=x2-x1; /*取x軸的相對坐標*/
iTy=y2-y1; /*取y軸的相對坐標*/
iDx=1;
iDy=1;
iFt=0;
iSt=iTx+iTy;
if(iTx<0)iSt=-1*iTx+iTy;; /*如果在第二象限,則x軸方向步長取負值*/
iXt=0;
iYt=0;
/*變數初始化結束*/
/*數據處理開始*/
while(iSt>0)
{
putpixel(x1+iXt,y1+iYt,color);
if(iTx>=0) /*如果在第一象限*/
{
if(iFt<0) /*如果偏差小於0*/
{
iYt+=iDy; /*y方向走一步*/
iFt+=iTx;
}
else /*如果偏差大於或等於0*/
{
iXt+=iDx; /*x方向走一步*/
iFt-=iTy;
}
}
else
{
if(iFt<0) /*如果偏差小於0*/
{
iXt-=iDx; /*負x方向走一步*/
iFt+=iTy;
}
else /*如果偏差大於或等於0*/
{
iYt+=iDy; /*y方向走一步*/
iFt+=iTx;
}
}
iSt--;
}
}
/*
###############################################################################
功 能:本函數的作用是用來畫一條直線
格 式:void myline2(int x1,int y1,int x2,int y2,int color)
參數說明:x1,y1是起始點坐標,x2,y2是終止點,color是畫線的顏色
調用示例:myline2(10,20,500,440,4)
###############################################################################
*/
int myline2(int x1,int y1,int x2,int y2,int color)
{
int iX; /*x方向的坐標變數*/
int iY; /*y方向的坐標變數*/
int iTx; /*x方向的步長變數*/
int iTy; /*y方向的步長變數*/
float fDx; /*x方向的差分變數*/
float fDy; /*y方向的差分變數*/
float fMinf; /*演算法中的f*/
float fMaxF; /*演算法中的F*/
float fS; /*終點判斷變數*/
fMinf=0.5; /*f=0.5*/
iX=x1;
iY=y1;
putpixel(x1,y1,color);
if(x1==x2&&y1==y2) /*如果終點和起始點相同*/
{
return(1);
}
iTx=1;
iTy=1;
fDx=(float)(x2-x1);
fDy=(float)(y2-y1);
fMaxF=fDy/fDx>0?fDy/fDx:(-fDy/fDx); /*F=|dy/dx|*/
if(fDx<0)iTx=-1;
if(fDy<0)iTy=-1;
fS=fDx>0?fDx:(-fDx);
if(fMaxF==1) /*如果F=1*/
{
iX=x1;
iY=y1;
while(fS>0)
{
iX+=iTx; /*x方向走一步*/
iY+=iTy; /*y方向走一步*/
putpixel(iX,iY,color);
fS--;
}
}
else if(fMaxF>1) /*如果F>1*/
{
fS+=fDy>0?fDy:(-fDy);
while(fS>0)
{
iY+=iTy; /*y方向走一步*/
putpixel(iX,iY,color);
fMinf+=1/fMaxF; /*f=f+1/F*/
fS--;
if(fMinf>=1) /*如果f>=1*/
{
iX+=iTx; /*x方向走一步*/
fMinf--; /*f=f-1*/
putpixel(iX,iY,color);
fS--;
}
}
}
else /*如果F<1*/
{
fS+=fDy>0?fDy:(-fDy);
while(fS>0)
{
iX+=iTx; /*x方向走一步*/
putpixel(iX,iY,color);
fMinf+=fMaxF; /*f=f+F*/
fS--;
if(fMinf>=1) /*如果f>=1*/
{
iY+=iTy; /*y方向走一步*/
fMinf--; /*f=f-1*/
putpixel(iX,iY,color);
fS--;
}
}
}
}