?? 圖形涵數.htm
字號:
<BR> 有關線型設定和畫線函數的例子如下所示。 <BR> 例10.
<BR> #include<stdlib.h>
<BR> #include<graphics.h>
<BR> int main() <BR> {
<BR> int gdriver, gmode,
i; <BR> gdriver=DETECT;
<BR>
registerbgidriver(EGAVGA_driver);
<BR>
initgraph(&gdriver, &gmode, "");
<BR> setbkcolor(BLUE);
<BR> cleardevice();
<BR> setcolor(GREEN);
<BR> circle(320, 240, 98);
<BR> setlinestyle(0, 0,
3); /*設置三點寬實線*/
<BR> setcolor(2);
<BR> rectangle(220, 140,
420, 340); <BR>
setcolor(WHITE); <BR>
setlinestyle(4, 0xaaaa, 1); /*設置一點寬用戶定義線*/
<BR> line(220, 240, 420,
240); <BR> line(320, 140,
320, 340); <BR> getch();
<BR> closegraph();
<BR> return 0;
<BR> }
<P> 5. 封閉圖形的填充 <BR> 填充就是用規定的顏色和圖模填滿一個封閉圖形。
<P> 一、先畫輪廓再填充 <BR> TURBO
C提供了一些先畫出基本圖形輪廓, 再按規定圖模和顏色填充整個封 <BR>閉圖形的函數。在沒有改變填充方式時, TURBO C以默認方式填充。
下面介紹這 <BR>些函數。
<P> void far bar(int x1, int y1, int x2, int y2);
<BR> 確定一個以(x1, y1)為左上角, (x2, y2)為右下角的矩形窗口, 再按規定圖 <BR>模和顏色填充。
<BR> 說明: 此函數不畫出邊框, 所以填充色為邊框。
<P> void far bar3d(int x1, int y1, int x2, int y2,
int depth, int <BR>topflag); <BR>
當topflag為非0時, 畫出一個三維的長方體。當topflag為0時, 三維圖形不 <BR>封頂, 實際上很少這樣使用。
<BR> 說明: bar3d()函數中, 長方體第三維的方向不隨任何參數而變, 即始終為 <BR>45度的方向。
<P> void far pieslice(int x, int y, int stangle,
int endangle, int <BR>radius); <BR> 畫一個以(x,
y)為圓心, radius為半徑, stangle為起始角度, endangle 為 <BR>終止角度的扇形, 再按規定方式填充。當stangle=0,
endangle=360 時變成一個 <BR>實心圓, 并在圓內從圓點沿X軸正向畫一條半徑。 <BR>
<BR> void far sector(int x, int y, int
stanle, intendangle, int <BR>xradius, int yradius);
<BR> 畫一個以(x, y)為圓心分別以xradius, yradius為x軸和y軸半徑, stangle
<BR>為起始角, endangle為終止角的橢圓扇形, 再按規定方式填充。
<P> 二、設定填充方式 <BR> TURBO
C有四個與填充方式有關的函數。下面分別介紹:
<P> void far setfillstyle(int pattern, int color);
<BR> color的值是當前屏幕圖形模式時顏色的有效值。pattern的值及與其等價的 <BR>符號常數如表7所示。
<BR> 表7.
關于填充式樣pattern的規定 <BR> ━━━━━━━━━━━━━━━━━━━━━━━━━━━
<BR>
符號常數
數值 含義 <BR>
─────────────────────────── <BR>
EMPTY_FILL
0 以背景顏色填充
<BR>
SOLID_FILL
1 以實填充
<BR>
LINE_FILL
2 以直線填充
<BR>
LTSLASH_FILL
3 以斜線填充(陰影線)
<BR>
SLASH_FILL
4 以粗斜線填充(粗陰影線)
<BR>
BKSLASH_FILL
5 以粗反斜線填充(粗陰影線)
<BR> LTBKSLASH_FILL
6 以反斜線填充(陰影線)
<BR>
HATCH_FILL
7 以直方網格填充
<BR>
XHATCH_FILL
8 以斜網格填充
<BR> INTTERLEAVE_FILL
9 以間隔點填充
<BR>
WIDE_DOT_FILL
10 以稀疏點填充
<BR> CLOSE_DOS_FILL
11 以密集點填充
<BR>
USER_FILL
12 以用戶定義式樣填充 <BR>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<P> 除USER_FILL(用戶定義填充式樣)以外, 其它填充式樣均可由setfillstyle()
<BR>函數設置。當選用USER_FILL時, 該函數對填充圖模和顏色不作任何改變。 之所
<BR>以定義USER_FILL主要因為在獲得有關填充信息時用到此項。 <BR> void far
setfillpattern(char * upattern,int color); <BR>
設置用戶定義的填充圖模的顏色以供對封閉圖形填充。 <BR>
其中upattern是一個指向8個字節的指針。這8個字節定義了8x8點陣的圖形。 <BR>每個字節的8位二進制數表示水平8點, 8個字節表示8行,
然后以此為模型向個封 <BR>閉區域填充。 <BR> void far getfillpattern(char *
upattern); <BR> 該函數將用戶定義的填充圖模存入upattern指針指向的內存區域。
<BR> void far getfillsetings(struct fillsettingstype far *
fillinfo); <BR>
獲得現行圖模的顏色并將存入結構指針變量fillinfo中。其中fillsettingstype <BR>結構定義如下:
<BR> struct
fillsettingstype{
<BR> int
pattern; /* 現行填充模式 * /
<BR> int
color; /* 現行填充模式 * /
<BR> };
<BR> 有關圖形填充圖模的顏色的選擇, 請看下面例程。 <BR> 例11:
<BR> #include<graphics.h>
<BR> main(){
<BR> char
str[8]={10,20,30,40,50,60,70,80}; /*用戶定義圖模*/
<BR> int gdriver,gmode,i;
<BR> struct fillsettingstype save;
/*定義一個用來存儲填充信息的結構變量*/ <BR>
gdriver=DETECT; <BR>
initgraph(&gdriver,&gmode,"c:\\tc");
<BR> setbkcolor(BLUE);
<BR> cleardevice();
<BR> for(i=0;i<13;i++)
<BR> {
<BR> setcolor(i+3);
<BR>
setfillstyle(i,2+i); /* 設置填充類型 *
<BR>
bar(100,150,200,50); /*畫矩形并填充*/
<BR> bar3d(300,100,500,200,70,1); /*
畫長方體并填充*/ <BR> pieslice(200, 300, 90,
180, 90);/*畫扇形并填充*/ <BR>
sector(500,300,180,270,200,100);/*畫橢圓扇形并填充*/
<BR>
delay(1000);
/*延時1秒*/ <BR> }
<BR> cleardevice();
<BR> setcolor(14);
<BR> setfillpattern(str, RED);
<BR> bar(100,150,200,50);
<BR> bar3d(300,100,500,200,70,0);
<BR> pieslice(200,300,0,360,90);
<BR> sector(500,300,0,360,100,50);
<BR> getch();
<BR>
getfillsettings(&save);
/*獲得用戶定義的填充模式信息*/ <BR> closegraph();
<BR> clrscr();
<BR> printf("The pattern is %d, The color of
filling is %d",
<BR>
save.pattern, save.color); /*輸出目前填充圖模和顏色值*/
<BR> getch(); <BR> }
<BR> 以上程序運行結束后, 在屏幕上顯示出現行填充圖模和顏色的常數值。
<P> 三、任意封閉圖形的填充 <BR> 截止目前為止,
我們只能對一些特定形狀的封閉圖形進行填充, 但還不能對 <BR>任意封閉圖形進行填充。為此, TURBO C 提供了一個可對任意封閉圖形填充的函 <BR>數,
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -