?? 圖形涵數(shù).htm
字號(hào):
<BR>
setcolor(i);
/*設(shè)置不同作圖色*/
<BR>
circle(320, 240, 20+i*10); /*畫(huà)半徑不同的圓*/
<BR>
delay(100);
/*延遲100毫秒*/ <BR> }
<BR> for(i=0; i<=15;
i++) <BR> {
<BR>
setbkcolor(i);
/*設(shè)置不同背景色*/
<BR>
cleardevice();
<BR>
circle(320, 240, 20+i*10);
<BR>
delay(100); <BR> }
<BR> closegraph();
<BR> return 0;
<BR> }
<P> 另外, TURBO C也提供了幾個(gè)獲得現(xiàn)行顏色設(shè)置情況的函數(shù)。 <BR> int
far getbkcolor(void); 返回現(xiàn)行背景顏色值。
<BR> int far
getcolor(void); 返回現(xiàn)行作圖顏色值。
<BR> int far getmaxcolor(void);
返回最高可用的顏色值。
<P> 4. 基本圖形函數(shù) <BR> 基本圖形函數(shù)包括畫(huà)點(diǎn),
線以及其它一些基本圖形的函數(shù)。本節(jié)對(duì)這些函數(shù) <BR>作一全面的介紹。
<P> 一、畫(huà)點(diǎn) <BR> 1. 畫(huà)點(diǎn)函數(shù)
<BR> void far putpixel(int x, int y, int color);
<BR> 該函數(shù)表示有指定的象元畫(huà)一個(gè)按color所確定顏色的點(diǎn)。對(duì)于顏色color的 <BR>值可從表3中獲得而對(duì)x,
y是指圖形象元的坐標(biāo)。 <BR> 在圖形模式下, 是按象元來(lái)定義坐標(biāo)的。對(duì)VGA適配器, 它的最高分辨率為
<BR>640x480, 其中640為整個(gè)屏幕從左到右所有象元的個(gè)數(shù), 480 為整個(gè)屏幕從上到 <BR>下所有象元的個(gè)數(shù)。屏幕的左上角坐標(biāo)為(0, 0),
右下角坐標(biāo)為(639, 479), 水 <BR>平方向從左到右為x軸正向, 垂直方向從上到下為y軸正向。TURBO C 的圖形函數(shù)
<BR>都是相對(duì)于圖形屏幕坐標(biāo), 即象元來(lái)說(shuō)的。 <BR> 關(guān)于點(diǎn)的另外一個(gè)函數(shù)是:
<BR> int far getpixel(int x, int y);
<BR> 它獲得當(dāng)前點(diǎn)(x, y)的顏色值。
<P> 2. 有關(guān)坐標(biāo)位置的函數(shù)
<P> int far getmaxx(void); <BR>
返回x軸的最大值。
<P> int far getmaxy(void); <BR>
返回y軸的最大值。
<P> int far getx(void); <BR>
返回游標(biāo)在x軸的位置。
<P> void far gety(void); <BR>
返回游標(biāo)有y軸的位置。
<P> void far moveto(int x, int y);
<BR> 移動(dòng)游標(biāo)到(x, y)點(diǎn), 不是畫(huà)點(diǎn), 在移動(dòng)過(guò)程中亦畫(huà)點(diǎn)。
<P> void far moverel(int dx, int dy);
<BR> 移動(dòng)游標(biāo)從現(xiàn)行位置(x, y)移動(dòng)到(x+dx, y+dy)的位置, 移動(dòng)過(guò)程中不畫(huà)點(diǎn)。 <BR>
<BR> 二、畫(huà)線 <BR> 1. 畫(huà)線函數(shù)
<BR> TURBO C提供了一系列畫(huà)線函數(shù), 下面分別敘述:
<P> void far line(int x0, int y0, int x1, int y1);
<BR> 畫(huà)一條從點(diǎn)(x0, y0)到(x1, y1)的直線。
<P> void far lineto(int x, int y);
<BR> 畫(huà)一作從現(xiàn)行游標(biāo)到點(diǎn)(x, y)的直線。
<P> void far linerel(int dx, int dy);
<BR> 畫(huà)一條從現(xiàn)行游標(biāo)(x, y)到按相對(duì)增量確定的點(diǎn)(x+dx, y+dy)的直線。
<P> void far circle(int x, int y, int radius);
<BR> 以(x, y)為圓心, radius為半徑, 畫(huà)一個(gè)圓。
<P> void far arc(int x, int y, int stangle, int
endangle, int radius); <BR> 以(x, y)為圓心, radius為半徑,
從stangle開(kāi)始到endangle結(jié)束(用度表示) <BR>畫(huà)一段圓弧線。在TURBO C中規(guī)定x軸正向?yàn)?度, 逆時(shí)針?lè)较蛐D(zhuǎn)一周, 依次為
<BR>90, 180, 270和360度(其它有關(guān)函數(shù)也按此規(guī)定, 不再重述)。
<P> void ellipse(int x, int y, int stangle, int
endangle, int xradius, <BR>int yradius); <BR> 以(x, y)為中心,
xradius, yradius為x軸和y軸半徑, 從角stangle 開(kāi)始到 <BR>endangle結(jié)束畫(huà)一段橢圓線, 當(dāng)stangle=0,
endangle=360時(shí), 畫(huà)出一個(gè)完整的 <BR>橢圓。
<P> void far rectangle(int x1, int y1, int x2, inty2);
<BR> 以(x1, y1)為左上角, (x2, y2)為右下角畫(huà)一個(gè)矩形框。
<P> void far drawpoly(int numpoints, int far
*polypoints); <BR> 畫(huà)一個(gè)頂點(diǎn)數(shù)為numpoints,
各頂點(diǎn)坐標(biāo)由polypoints 給出的多邊形。 <BR>polypoints整型數(shù)組必須至少有2倍頂點(diǎn)數(shù)個(gè)無(wú)素。每一個(gè)頂點(diǎn)的坐標(biāo)都定義為x, <BR>y,
并且x在前。值得注意的是當(dāng)畫(huà)一個(gè)封閉的多邊形時(shí), numpoints 的值取實(shí)際 <BR>多邊形的頂點(diǎn)數(shù)加一,
并且數(shù)組polypoints中第一個(gè)和最后一個(gè)點(diǎn)的坐標(biāo)相同。 <BR> 下面舉一個(gè)用drawpoly()函數(shù)畫(huà)箭頭的例子。
<BR> 例9: <BR> #include<stdlib.h>
<BR> #include<graphics.h>
<BR> int main() <BR> {
<BR> int gdriver, gmode,
i; <BR> int arw[16]={200,
102, 300, 102, 300, 107, 330,
<BR>
100, 300, 93, 300, 98, 200, 98, 200, 102};
<BR> gdriver=DETECT;
<BR>
registerbgidriver(EGAVGA_driver);
<BR>
initgraph(&gdriver, &gmode, "");
<BR> setbkcolor(BLUE);
<BR> cleardevice();
<BR>
setcolor(12); /*設(shè)置作圖顏色*/
<BR> drawpoly(8,
arw); /*畫(huà)一箭頭*/
<BR> getch();
<BR> closegraph();
<BR> return 0;
<BR> }
<P> 2. 設(shè)定線型函數(shù) <BR> 在沒(méi)有對(duì)線的特性進(jìn)行設(shè)定之前, TURBO
C用其默認(rèn)值, 即一點(diǎn)寬的實(shí)線, <BR>但TURBO C也提供了可以改變線型的函數(shù)。線型包括:寬度和形狀。其中寬度只有 <BR>兩種選擇:
一點(diǎn)寬和三點(diǎn)寬。而線的形狀則有五種。下面介紹有關(guān)線型的設(shè)置函 <BR>數(shù)。
<P> void far setlinestyle(int
linestyle, unsigned upattern, int <BR>thickness);
<BR> 該函數(shù)用來(lái)設(shè)置線的有關(guān)信息, 其中l(wèi)inestyle是線形狀的規(guī)定, 見(jiàn)表5。
<BR> 表5. 有關(guān)線的形狀(linestyle)
<BR>━━━━━━━━━━━━━━━━━━━━━━━━━ <BR>
符號(hào)常數(shù)
數(shù)值 含義
<BR>───────────────────────── <BR>
SOLID_LINE
0 實(shí)線
<BR>
DOTTED_LINE
1 點(diǎn)線
<BR>
CENTER_LINE
2 中心線
<BR>
DASHED_LINE
3 點(diǎn)畫(huà)線
<BR>
USERBIT_LINE
4 用戶定義線
<BR>━━━━━━━━━━━━━━━━━━━━━━━━━ <BR> thickness是線的寬度, 見(jiàn)表6。
<P> 表6. 有關(guān)線寬(thickness)
<BR>━━━━━━━━━━━━━━━━━━━━━━━━━ <BR>
符號(hào)常數(shù)
數(shù)值 含義
<BR>───────────────────────── <BR>
NORM_WIDTH
1 一點(diǎn)寬
<BR>
THIC_WIDTH
3 三點(diǎn)寬
<BR>━━━━━━━━━━━━━━━━━━━━━━━━━ <BR> 對(duì)于upattern,
只有l(wèi)inestyle選USERBIT_LINE 時(shí)才有意義( 選其它線型,
<BR>uppattern取0即可)。此進(jìn)uppattern的16位二進(jìn)制數(shù)的每一位代表一個(gè)象元, 如 <BR>果那位為1, 則該象元打開(kāi), 否則該象元關(guān)閉。
<P> void far getlinesettings(struct linesettingstype far
*lineinfo); <BR>
該函數(shù)將有關(guān)線的信息存放到由lineinfo 指向的結(jié)構(gòu)中, 表中
<BR>linesettingstype的結(jié)構(gòu)如下:
<BR> struct
linesettingstype{
<BR>
int linestyle;
<BR>
unsigned upattern;
<BR>
int thickness; <BR> }
<BR> 例如下面兩句程序可以讀出當(dāng)前線的特性 <BR> struct
linesettingstype *info; <BR> getlinesettings(info);
<BR> <BR> void far setwritemode(int mode);
<BR> 該函數(shù)規(guī)定畫(huà)線的方式。如果mode=0, 則表示畫(huà)線時(shí)將所畫(huà)位置的原來(lái)信息 <BR>覆蓋了(這是TURBO
C的默認(rèn)方式)。如果mode=1, 則表示畫(huà)線時(shí)用現(xiàn)在特性的線 <BR>與所畫(huà)之處原有的線進(jìn)行異或(XOR)操作,
實(shí)際上畫(huà)出的線是原有線與現(xiàn)在規(guī)定 <BR>的線進(jìn)行異或后的結(jié)果。因此, 當(dāng)線的特性不變, 進(jìn)行兩次畫(huà)線操作相當(dāng)于沒(méi)有 <BR>畫(huà)線。
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -