📄 图形涵数.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 + -