C语言图形函数大全(5)
时间:2025-07-14
时间:2025-07-14
C语言图形函数大全
的结构体变量中,表中linesettingstype的结构如下: struct linesettingstype { int linestyle;
unsigned upattern; int thickness;} 例如下面两句程序可以读出当前线的特性: struct linesettingstype *info; getlinesettings(info); void far setwritemode(int mode);该函数规定画线的方式。如果mode=0,则表示画线时将所画位置的原来信息覆盖了。如果mode=1,则表示画线时用现在的线与所画之处原有的线进行异或(XOR)操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变时,进行两次画线操作相当于没有画线。 有关线型设定和画线函数的例了如例2.10所示。 6、封闭图形的填充 填充就是用规定的颜色和图模填满一个封闭图形。 (1)先画轮廓现填充 TC提供了一些先画出基本图形轮廓,再按规定图模和颜色填充整个封闭图形的函数。在没有改变填充方式时,TC以默认方式填充。 void far bar(int x1,int y1,int x2,int y2);确定一个以(x1,y1)为左上角,(x2,y2)为右下角的矩形窗口,再按规定图模和颜色填充。说明:此函数不画出边框,所以填充色为边框。 void far bar3d(int x1,int y1,int x2,int y2,int depth,int topflag);当topflag为非0时,画出一个三维的长方体。当topflag为0时,三维图形不封顶,实际上很少这样使用。 void far pieslice(int x,int y,int stangle,int endangle,int radius);画一个以(x,y)为圆心,radius为半径,stangle为起始角度,endangle为终止角度的扇形,再按规定方式填充。当stangle=0,endangle=360时变成一个实心圆,并在圆内从圆点沿X轴正向画一条半径。 void far sector(int x,int y ,int stangle,int endangle,int xradius,int yradius);画一个以(x,y)为圆心,分别以xradius,yradius为X轴半径和Y轴半径,stangle为起始角,endangle为终止角的椭圆扇形,再按规定方式进行填充。
(2)设定填充方式 TC有四个与填充方式有关的函数。 void far setfillstyle(int pattern,int color);color的值是当前屏幕图形模式时颜色的有效值。Pattern的值及与其等价的符号常数如表所示。
关于填充式样pattern的规定
C语言图形函数大全
除USER_FILL(用户定义填充式样)以外,其他填充式样均可由setfillstyle( )函数设置。当选用USER_FILL时,该函数对填充图模和颜色不作任何改变。之所以定义USER_FILL主要是因为在获得有关填充信息时会用到此项。
void far setfillpattern(char *upattern,int color);设置用户定义的填充图模的颜色以供对封闭图形填充。其中upattern是一个指向8个字节的指针。这8个字节定义了8×8点阵的图形。每个字节的8位二进制数表示水平8点,8个字节表示8行,然后以此为模型向整个封闭区域填充。
void far getfillpattern(char *upattern);该函数将用户定义的填充图模式存入upattern指针指向的内存区域。
void far getfillsettings(struct fillsettingstype far *fillinfo);获得现行图模的颜色并将其存入结构指针变量fillinfo中。其中fillsettingstype结构定义如下:
struct fillsettingstype
{ int pattern; /*现行填充模式*/ int color; /*现行填充颜色*/ };
有关图形填充模式的颜色的选择,请看例题[2.11]。 7、任意封闭图形的填充 到目前为止,我们只能对一些特定形状的封闭图形进行填充,还不能对任意封闭图形进行填充。为此,TC提供了一个可对任意封闭图形进行填充的函数,其调用格式如下: void far floodfill(int x,int y,int border); 其中(x,y)为封闭图形内的任意一点。Border为边界的颜色,也就是封闭图形轮廓的颜色。调用了该函数后,将用规定的颜色和样式填满整个封闭图形。 注意: (1)如果x或y取在边界上,则不进行填充。 (2)如果不是封闭图形,则填充会从没有封闭的地方溢出去产,填满其它地方。 (3)如果x或y在图形外面,则填充发生在封闭图形外的屏幕区域。 (4)由border指定的颜色值必须与图形轮廓的颜色值相同,但填充色可选任意颜色。 详见例[2.12]。
8、有关图形窗口和图形屏幕操作函数 像文本方式下可以设定屏幕窗口一样,图形方式下也可以在屏幕上某一区域设定窗口,只是设定的为图形窗口而已,其后的有关图形操作都将以这个窗口的左上角(0,0)为坐标原点,而且可以通过设置,使窗口之外的区域为不可接触区域。这样所有的图形操作就被限定在窗口内进行。 void far setviewport(int x1,int x2,int y1,int y2,int clipflag);
该函数设定一个以(x1,y1)像素点为左上角,(x2,y2)像素点为右下角的图形窗口,其中x1,x2,y1,y2是相对于整个屏幕的坐标。若clipflag为非0,则设定的图形以外部分不可接触,若非0,则图形窗口以外可以接触。
void far clearviewport(void);清除现行图形窗口的内容。
void far getviewsettings(struct viewporttype far *viewport);获得关于现行窗口的信息,并将其存于viewporttype定义的结构变量viewport中,其中viewporttype的结构说明如下:
struct viewporttype{int left;int top;int right;int botton;int clipflag;} 说明:
(1)窗口颜色的设置与前面讲过的屏幕颜色设置相同,但屏幕背景色和窗口背景色只能是一种颜色,如果窗口背景色改变,整个屏幕的背景色也将改变,这与文本窗口不同。
(2)可以在同一个屏幕上设置多个窗口,但只能有一个现行窗口工作,要对其他窗 …… 此处隐藏:836字,全部文档内容请下载后查看。喜欢就下载吧 ……
下一篇:第1章概论(上课)