📄 gra.htm
字号:
<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>数, 其调用格式如下:
<BR> void far floodfill(int
x, int y, int border);
<BR> 其中: x, y为封闭图形内的任意一点。border为边界的颜色,
也就是封闭图
<BR>形轮廓的颜色。调用了该函数后, 将用规定的颜色和图模填满整个封闭图形。
<BR> 注意:
<BR> 1. 如果x或y取在边界上, 则不进行填充。
<BR> 2. 如果不是封闭图形则填充会从没有封闭的地方溢出去,
填满其它地方。
<BR> 3. 如果x或y在图形外面, 则填充封闭图形外的屏幕区域。
<BR> 4. 由border指定的颜色值必须与图形轮廓的颜色值相同,
但填充色可选任
<BR>意颜色。下例是有关floodfill()函数的用法, 该程序填充了bar3d()所画长方体
<BR>中其它两个未填充的面。
<BR> 例12:
<BR> #include<stdlib.h>
<BR> #include<graphics.h>
<BR> main()
<BR> {
<BR> int gdriver,
gmode;
<BR> strct fillsettingstype
save;
<BR> gdriver=DETECT;
<BR> initgraph(&gdriver,
&gmode, "");
<BR> setbkcolor(BLUE);
<BR> cleardevice();
<BR> setcolor(LIGHTRED);
<BR> setlinestyle(0,0,3);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -