📄 gra.htm
字号:
以粗反斜线填充(粗阴影线) <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>
<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>
<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); <br>
setfillstyle(1,14);
/*设置填充方式*/ <br>
bar3d(100,200,400,350,200,1); /*画长方体并填充*/ <br>
floodfill(450,300,LIGHTRED); /*填充长方体另外两个面*/
<br>
floodfill(250,150, LIGHTRED); <br>
rectanle(450,400,500,450); /*画一矩形*/
<br>
floodfill(470,420, LIGHTRED); /*填充矩形*/ <br>
getch(); <br>
closegraph(); <br>
} </p>
<p> 6.
有关图形窗口和图形屏幕操作函数 </p>
<p> 一、图形窗口操作 <br>
象文本方式下可以设定屏幕窗口一样,
图形方式下也可以在屏幕上某一区域 <br>
设定窗口, 只是设定的为图形窗口而已,
其后的有关图形操作都将以这个窗口的 <br>
左上角(0,0)作为坐标原点,
而且可为通过设置使窗口之外的区域为不可接触。
<br>
这样,
所有的图形操作就被限定在窗口内进行。 <br>
void far setviewport(int xl,int yl,int
x2, int y2,int clipflag); <br>
设定一个以(xl,yl)象元点为左上角,
(x2,y2)象元为右下角的图形窗口, 其 <br>
中x1,y1,x2,y2是相对于整个屏幕的坐标。若clipflag为非0,
则设定的图形以外 <br>
部分不可接触, 若clipflag为0,
则图形窗口以外可以接触。 <br>
void far clearviewport(void); <br>
&n
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -