⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gra.htm

📁 C程序宝藏,内有标准C的详细介绍,适合自学,初学人员参考
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setcolor(2);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rectangle(220,
140, 420, 340);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setcolor(WHITE);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setlinestyle(4,
0xaaaa, 1);&nbsp;&nbsp; /*设置一点宽用户定义线*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line(220, 240,
420, 240);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line(320, 140,
320, 340);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closegraph();
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;
<BR>&nbsp;&nbsp;&nbsp;&nbsp; }

<P>&nbsp;&nbsp;&nbsp; 5. 封闭图形的填充
<BR>&nbsp;&nbsp;&nbsp; 填充就是用规定的颜色和图模填满一个封闭图形。

<P>&nbsp;&nbsp;&nbsp; 一、先画轮廓再填充
<BR>&nbsp;&nbsp;&nbsp; TURBO C提供了一些先画出基本图形轮廓,&nbsp; 再按规定图模和颜色填充整个封
<BR>闭图形的函数。在没有改变填充方式时, TURBO C以默认方式填充。 下面介绍这
<BR>些函数。

<P>&nbsp;&nbsp;&nbsp;&nbsp; void far bar(int x1, int y1, int x2, int y2);
<BR>&nbsp;&nbsp;&nbsp; 确定一个以(x1, y1)为左上角, (x2, y2)为右下角的矩形窗口,
再按规定图
<BR>模和颜色填充。
<BR>&nbsp;&nbsp;&nbsp; 说明: 此函数不画出边框, 所以填充色为边框。

<P>&nbsp;&nbsp;&nbsp; void far bar3d(int x1, int y1, int x2, int y2,&nbsp;&nbsp;
int&nbsp; depth,&nbsp;&nbsp; int
<BR>topflag);
<BR>&nbsp;&nbsp;&nbsp; 当topflag为非0时, 画出一个三维的长方体。当topflag为0时,
三维图形不
<BR>封顶, 实际上很少这样使用。
<BR>&nbsp;&nbsp;&nbsp; 说明: bar3d()函数中, 长方体第三维的方向不随任何参数而变,&nbsp;
即始终为
<BR>45度的方向。

<P>&nbsp;&nbsp;&nbsp;&nbsp; void far pieslice(int x, int y, int stangle,
int&nbsp; endangle,&nbsp;&nbsp; int
<BR>radius);
<BR>&nbsp;&nbsp;&nbsp; 画一个以(x, y)为圆心, radius为半径, stangle为起始角度,
endangle 为
<BR>终止角度的扇形, 再按规定方式填充。当stangle=0, endangle=360 时变成一个
<BR>实心圆, 并在圆内从圆点沿X轴正向画一条半径。
<BR>&nbsp;
<BR>&nbsp;&nbsp;&nbsp;&nbsp; void far sector(int x, int y,&nbsp;&nbsp;
int&nbsp; stanle,&nbsp;&nbsp; intendangle,&nbsp;&nbsp; int
<BR>xradius, int yradius);
<BR>&nbsp;&nbsp;&nbsp; 画一个以(x, y)为圆心分别以xradius, yradius为x轴和y轴半径,&nbsp;
stangle
<BR>为起始角, endangle为终止角的椭圆扇形, 再按规定方式填充。

<P>&nbsp;&nbsp;&nbsp; 二、设定填充方式
<BR>&nbsp;&nbsp;&nbsp; TURBO C有四个与填充方式有关的函数。下面分别介绍:

<P>&nbsp;&nbsp;&nbsp;&nbsp; void far setfillstyle(int pattern, int color);
<BR>&nbsp;&nbsp;&nbsp; color的值是当前屏幕图形模式时颜色的有效值。pattern的值及与其等价的
<BR>符号常数如表7所示。
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
表7. 关于填充式样pattern的规定
<BR>&nbsp;&nbsp;&nbsp;&nbsp; ━━━━━━━━━━━━━━━━━━━━━━━━━━━
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 符号常数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
数值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 含义
<BR>&nbsp;&nbsp;&nbsp;&nbsp; ───────────────────────────
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EMPTY_FILL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以背景颜色填充
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SOLID_FILL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以实填充
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LINE_FILL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以直线填充
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LTSLASH_FILL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以斜线填充(阴影线)
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SLASH_FILL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以粗斜线填充(粗阴影线)
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BKSLASH_FILL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以粗反斜线填充(粗阴影线)
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LTBKSLASH_FILL&nbsp;&nbsp;&nbsp;&nbsp;
6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以反斜线填充(阴影线)
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HATCH_FILL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以直方网格填充
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XHATCH_FILL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以斜网格填充
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTTERLEAVE_FILL&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
以间隔点填充
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WIDE_DOT_FILL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以稀疏点填充
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLOSE_DOS_FILL&nbsp;&nbsp;&nbsp;&nbsp;
11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以密集点填充
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; USER_FILL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以用户定义式样填充
<BR>&nbsp;&nbsp;&nbsp;&nbsp; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━

<P>&nbsp;&nbsp;&nbsp; 除USER_FILL(用户定义填充式样)以外, 其它填充式样均可由setfillstyle()
<BR>函数设置。当选用USER_FILL时, 该函数对填充图模和颜色不作任何改变。 之所
<BR>以定义USER_FILL主要因为在获得有关填充信息时用到此项。
<BR>&nbsp;&nbsp;&nbsp; void far setfillpattern(char * upattern,int color);
<BR>&nbsp;&nbsp;&nbsp; 设置用户定义的填充图模的颜色以供对封闭图形填充。
<BR>&nbsp;&nbsp;&nbsp; 其中upattern是一个指向8个字节的指针。这8个字节定义了8x8点阵的图形。
<BR>每个字节的8位二进制数表示水平8点, 8个字节表示8行, 然后以此为模型向个封
<BR>闭区域填充。
<BR>&nbsp;&nbsp;&nbsp; void far getfillpattern(char * upattern);
<BR>&nbsp;&nbsp;&nbsp; 该函数将用户定义的填充图模存入upattern指针指向的内存区域。
<BR>&nbsp;&nbsp;&nbsp; void far getfillsetings(struct fillsettingstype
far * fillinfo);
<BR>&nbsp;&nbsp;&nbsp; 获得现行图模的颜色并将存入结构指针变量fillinfo中。其中fillsettingstype
<BR>结构定义如下:
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct fillsettingstype{
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int pattern;&nbsp; /* 现行填充模式 * /
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int color;&nbsp;&nbsp;&nbsp; /* 现行填充模式 * /
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };
<BR>&nbsp;&nbsp;&nbsp; 有关图形填充图模的颜色的选择, 请看下面例程。
<BR>&nbsp;&nbsp;&nbsp; 例11:
<BR>&nbsp;&nbsp;&nbsp;&nbsp; #include&lt;graphics.h>
<BR>&nbsp;&nbsp;&nbsp;&nbsp; main(){
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char str[8]={10,20,30,40,50,60,70,80};
/*用户定义图模*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int gdriver,gmode,i;
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct fillsettingstype
save; /*定义一个用来存储填充信息的结构变量*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gdriver=DETECT;
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; initgraph(&amp;gdriver,&amp;gmode,"c:\\tc");
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setbkcolor(BLUE);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cleardevice();
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;13;i++)
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setcolor(i+3);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setfillstyle(i,2+i);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* 设置填充类型 *
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bar(100,150,200,50);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*画矩形并填充*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bar3d(300,100,500,200,70,1);
/* 画长方体并填充*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pieslice(200, 300, 90, 180,
90);/*画扇形并填充*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sector(500,300,180,270,200,100);/*画椭圆扇形并填充*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delay(1000);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*延时1秒*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cleardevice();
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setcolor(14);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setfillpattern(str, RED);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bar(100,150,200,50);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bar3d(300,100,500,200,70,0);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pieslice(200,300,0,360,90);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sector(500,300,0,360,100,50);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getfillsettings(&amp;save);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*获得用户定义的填充模式信息*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closegraph();
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clrscr();
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("The pattern is %d, The
color of filling&nbsp; is&nbsp; %d",
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
save.pattern, save.color); /*输出目前填充图模和颜色值*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();
<BR>&nbsp;&nbsp;&nbsp;&nbsp; }
<BR>&nbsp;&nbsp;&nbsp; 以上程序运行结束后, 在屏幕上显示出现行填充图模和颜色的常数值。

<P>&nbsp;&nbsp;&nbsp; 三、任意封闭图形的填充
<BR>&nbsp;&nbsp;&nbsp; 截止目前为止, 我们只能对一些特定形状的封闭图形进行填充,
但还不能对
<BR>任意封闭图形进行填充。为此, TURBO C 提供了一个可对任意封闭图形填充的函
<BR>数, 其调用格式如下:
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void far floodfill(int
x, int y, int border);
<BR>&nbsp;&nbsp;&nbsp; 其中: x, y为封闭图形内的任意一点。border为边界的颜色,
也就是封闭图
<BR>形轮廓的颜色。调用了该函数后, 将用规定的颜色和图模填满整个封闭图形。
<BR>&nbsp;&nbsp;&nbsp; 注意:
<BR>&nbsp;&nbsp;&nbsp; 1. 如果x或y取在边界上, 则不进行填充。
<BR>&nbsp;&nbsp;&nbsp; 2. 如果不是封闭图形则填充会从没有封闭的地方溢出去,
填满其它地方。
<BR>&nbsp;&nbsp;&nbsp; 3. 如果x或y在图形外面, 则填充封闭图形外的屏幕区域。
<BR>&nbsp;&nbsp;&nbsp; 4. 由border指定的颜色值必须与图形轮廓的颜色值相同,&nbsp;
但填充色可选任
<BR>意颜色。下例是有关floodfill()函数的用法, 该程序填充了bar3d()所画长方体
<BR>中其它两个未填充的面。
<BR>&nbsp;&nbsp;&nbsp; 例12:
<BR>&nbsp;&nbsp;&nbsp;&nbsp; #include&lt;stdlib.h>
<BR>&nbsp;&nbsp;&nbsp;&nbsp; #include&lt;graphics.h>
<BR>&nbsp;&nbsp;&nbsp;&nbsp; main()
<BR>&nbsp;&nbsp;&nbsp;&nbsp; {
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int gdriver,
gmode;
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strct fillsettingstype
save;
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gdriver=DETECT;
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; initgraph(&amp;gdriver,
&amp;gmode, "");
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setbkcolor(BLUE);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cleardevice();
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setcolor(LIGHTRED);
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setlinestyle(0,0,3);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -