TC中使用圖形函數的基本知識
我很想成一個知識很豐富的程式員,可所有的知識都要一點一點的學。 平時唯寫過作業式的程式的中國教育模式下的大學生來說,根本就沒有任何用圖形的經曆,我甚至連要使用圖形學要什麼標頭檔都不知道。在網上查了些文章,最後找到了王大剛老師的<C語言編程寶典>這篇文章介紹了許多很有用的基本知識。
首先就是如果要在TC中使用圖形化介面,需要"#include<graphics.h>",並且在main函數的開頭寫上:
void main()
{
int gdriver,gmode;
detectgraph(& gdriver,& gmode)
initgraph(& gdriver, & gmode,"c:\\turboc2");
}
在結尾處寫上: closegraph(); 而且如果希望程式運行完畢並不立即結束,最好是在程式的最後寫上:getch();
另外可以使用如下的函數來改變圖形線條的顏色和背景顏色。
setcolor(int);setbkcolor(int);中數值含義為:
BLACK 0 黑色 DARKGRAY 8 深灰
BLUE 1 蘭色 LIGHTBLUE 9 深蘭
GREEN 2 綠色 LIGHTGREEN 10 淡綠
CYAN 3 青色 LIGHTCYAN 11 淡青
RED 4 紅色 LIGHTRED 12 淡紅
MAGENTA 5 洋紅 LIGHTMAGENTA 13 淡洋紅
BROWN 6 棕色 YELLOW 14 黃色
LIGHTGRAY 7 淡灰 WHITE 15 白色
cleardevice();可以清楚螢幕內容。
現在介紹一些畫圖形的函數。
putpixel(int x, int y, int color); 畫點。其中x,y是該點的橫縱座標。在TC中螢幕是按640*480的解析度來計算座標的。
line(int x0,int y0,int x1,int y1); 畫一條從點(x0, y0)到(x1, y1)的直線。
circle(int x, int y, int radius); 以(x, y)為圓心, radius為半徑, 畫一個圓。
arc(int x, int y, int stangle, int endangle, int radius); 以(x, y)為圓心, radius為半徑, 從stangle開始到endangle結束(用度表示) 畫一段圓弧線。
rectangle(int x1, int y1, int x2, inty2); 以(x1, y1)為左上方, (x2, y2)為右下角畫一個矩形框。
drawpoly(int numpoints, int far *polypoints); 畫一個頂點數為numpoints,各頂點座標由polypoints 給出的多邊形。polypoints整型數組必須至少有2倍頂點數個無素。每一個頂點的座標都定義為x, y, 並且x在前。值得注意的是當畫一個封閉的多邊形時, numpoints 的值取實際多邊形的頂點數加一, 並且數組polypoints中第一個和最後一個點的座標相同。
bar(int x1, int y1, int x2, int y2); 確定一個以(x1, y1)為左上方, (x2, y2)為右下角的矩形視窗,再按規定圖模和顏色填充。
bar3d(int x1, int y1, int x2, int y2, int depth, int topflag);當topflag為非0時, 畫出一個三維的長方體。當topflag為0時, 三維圖形不封頂, 實際上很少這樣使用。
下面舉個例子,我們來畫一個長方形。我們可以這麼做,先用setfillstyle(1,2);再用bar3d(10,10,20,20,4,1)就用2的顏色畫了一個長方形。(其中的1,2下面我再說明。)我們還可以這麼做,用rectangle(10,10,20,20)但還需要用floodfill(15,15,3)來填充。(假設前景色彩為3)。setfillstyle(int,int)中的兩個參數是這樣規定的:
setfillstyle(int pattern, int color);
pattern的設定如下:
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 以斜網格填充
INTTERLEAVE_FILL 9 以間隔點填充
WIDE_DOT_FILL 10 以稀疏點填充
CLOSE_DOS_FILL 11 以密集點填充
USER_FILL 12 以使用者定義式樣填充
color就是畫圖的邊框顏色,其數值含義同前面介紹的定義一樣。
最後是如何在圖形介面輸出文字,需要"#include<conio.h>"然後加上outtextxy(int x,int y,char * s);s為要輸出的字串。其中有可能要用到sprintf(s, "You want to show the number is %d", num); 這裡s應是字串指標或數組, num為整型變數。
就寫這些了,如果還想瞭解更多的內容請參看王大剛老師的<C語言編程寶典>