一、畫點 1. 畫點函數 void far putpixel(int x, int y, int color); 該函數表示有指定的象元畫一個按color所確定顏色的點。對于顏色color的 值可從表3中獲得而對x, y是指圖形象元的坐標。 在圖形模式下, 是按象元來定義坐標的。對VGA適配器, 它的最高分辨率為
640x480, 其中640為整個屏幕從左到右所有象元的個數, 480 為整個屏幕從上到 下所有象元的個數。屏幕的左上角坐標為(0, 0), 右下角坐標為(639, 479), 水 平方向從左到右為x軸正向, 垂直方向從上到下為y軸正向。TURBO C 的圖形函數 都是相對于圖形屏幕坐標, 即象元來說的。 關于點的另外一個函數是: int far getpixel(int x, int y); 它獲得當前點(x, y)的顏色值。
2. 有關坐標位置的函數
int far getmaxx(void); 返回x軸的最大值。
int far getmaxy(void); 返回y軸的最大值。
int far getx(void); 返回游標在x軸的位置。
void far gety(void); 返回游標有y軸的位置。
void far moveto(int x, int y); 移動游標到(x, y)點, 不是畫點, 在移動過程中亦畫點。
void far moverel(int dx, int dy); 移動游標從現行位置(x, y)移動到(x+dx, y+dy)的位置, 移動過程中不畫點。
二、畫線 1. 畫線函數 TURBO C提供了一系列畫線函數, 下面分別敘述:
void far line(int x0, int y0, int x1, int y1); 畫一條從點(x0, y0)到(x1, y1)的直線。
void far lineto(int x, int y); 畫一作從現行游標到點(x, y)的直線。
void far linerel(int dx, int dy); 畫一條從現行游標(x, y)到按相對增量確定的點(x+dx, y+dy)的直線。
void far circle(int x, int y, int radius); 以(x, y)為圓心, radius為半徑, 畫一個圓。
void far arc(int x, int y, int stangle, int endangle, int radius); 以(x, y)為圓心, radius為半徑, 從stangle開始到endangle結束(用度表示) 畫一段圓弧線。在TURBO C中規定x軸正向為0度, 逆時針方向旋轉一周, 依次為 90, 180, 270和360度(其它有關函數也按此規定, 不再重述)。
void ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius); 以(x, y)為中心, xradius, yradius為x軸和y軸半徑, 從角stangle 開始到 endangle結束畫一段橢圓線, 當stangle=0, endangle=360時, 畫出一個完整的 橢圓。
void far rectangle(int x1, int y1, int x2, inty2); 以(x1, y1)為左上角, (x2, y2)為右下角畫一個矩形框。
void far drawpoly(int numpoints, int far *polypoints); 畫一個頂點數為numpoints, 各頂點坐標由polypoints 給出的多邊形。 polypoints整型數組必須至少有2倍頂點數個無素。每一個頂點的坐標都定義為x, y, 并且x在前。值得注重的是當畫一個封閉的多邊形時, numpoints 的值取實際 多邊形的頂點數加一, 并且數組polypoints中第一個和最后一個點的坐標相同。 下面舉一個用drawpoly()函數畫箭頭的例子。 例9: #include #include int main() { int gdriver, gmode, i; int arw[16]={200, 102, 300, 102, 300, 107, 330, 100, 300, 93, 300, 98, 200, 98, 200, 102};
void far bar(int x1, int y1, int x2, int y2); 確定一個以(x1, y1)為左上角, (x2, y2)為右下角的矩形窗口, 再按規定圖 模和顏色填充。 說明: 此函數不畫出邊框, 所以填充色為邊框。
void far bar3d(int x1, int y1, int x2, int y2, int depth, int topflag); 當topflag為非0時, 畫出一個三維的長方體。當topflag為0時, 三維圖形不 封頂, 實際上很少這樣使用。 說明: bar3d()函數中, 長方體第三維的方向不隨任何參數而變, 即始終為 45度的方向。
void far pieslice(int x, int y, int stangle, int endangle, int radius); 畫一個以(x, y)為圓心, radius為半徑, stangle為起始角度, endangle 為 終止角度的扇形, 再按規定方式填充。當stangle=0, endangle=360 時變成一個 實心圓, 并在圓內從圓點沿X軸正向畫一條半徑。
void far sector(int x, int y, int stanle, intendangle, int xradius, int yradius); 畫一個以(x, y)為圓心分別以xradius, yradius為x軸和y軸半徑, stangle 為起始角, endangle為終止角的橢圓扇形, 再按規定方式填充。
void far settextstyle(int font, int direction, int charsize); 該函數用來設置輸出字符的字形(由font確定)、輸出方向(由direction確定) 和字符大小(由charsize確定)等特性。Turbo C2.0對函數中各個參數的規定見下 列各表所示: