turboc图形函数介绍及应用实例(编辑修改稿)内容摘要:

linestyle。 unsigned upattern。 int thickness。 } 例如下面两句程序可以读出当前线的特性 struct linesettingstype *info。 getlinesettings(info)。 void far setwritemode(int mode)。 该函数规定画线的方式。 如果 mode=0, 则表示画线时将所画位置的原来信息覆盖了 (这是TURBO C的默认方式 )。 如果 mode=1, 则表示画线时用现在特性的线与所画之处原有 的线进行异或 (XOR)操作 , 实际上画出的线是原有线与现在规定的线进行异或后的结果。 因此 , 当线的特性不变 , 进行两次画线操作相当于没有画线。 有关线型设定和画线函数的例子如下所示。 7 例 10. include include int main() { int gdriver, gmode, i。 gdriver=DETECT。 registerbgidriver(EGAVGA_driver)。 initgraph(amp。 gdriver, amp。 gmode, )。 setbkcolor(BLUE)。 cleardevice()。 setcolor(GREEN)。 circle(320, 240, 98)。 setlinestyle(0, 0, 3)。 /*设置三点宽实线 */ setcolor(2)。 rectangle(220, 140, 420, 340)。 setcolor(WHITE)。 setlinestyle(4, 0xaaaa, 1)。 /*设置一点宽用户定义线 */ line(220, 240, 420, 240)。 line(320, 140, 320, 340)。 getch()。 closegraph()。 return 0。 } 5. 封闭图形的填充 填充就是用规定的颜色和图模填满一个封闭图形。 一、先画轮廓再填充 TURBO C提供了一些先画出基本图形轮廓 , 再按规定图模和颜色填充整个封闭图形的函数。 在没有改变填充方式时 , TURBO C以默认方式填充。 下面介绍这些函数。 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时 , 三维图形不封顶 , 实际上很少这样使用。 说明 : bar3d()函数中 , 长方体第三维的方向不随任何参数而变 , 即始终为 45度的方向。 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 stanle, intendangle, int xradius, int yradius)。 画一个以 (x, y)为圆心分别以 xradius, yradius 为 x 轴和 y 轴半径 , stangle 为起始角 , endangle为终止角的椭圆扇形 , 再按规定方式填充。 二、设定填充方式 TURBO C有四个与填充方式有关的函数。 下面分别介绍 : void far setfillstyle(int pattern, int color)。 color的值是当前屏幕图形模式时颜色的有效值。 pattern的值及与其等价的符号常数如表 7所示。 8 表 7. 关于填充式样 pattern的规定 ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 含义 ─────────────────────────── EMPTY_FILL 0 以背景颜色 填充 SOLID_FILL 1 以实填充 LINE_FILL 2 以直线填充 LTSLASH_FILL 3 以斜线填充 (阴影线 ) SLASH_FILL 4 以粗斜线填充 (粗阴影线 ) BKSLASH_FILL 5 以粗反斜线填充 (粗阴影线 ) LTBKSLASH_FILL 6 以反斜线填充 (阴影线 ) HATCH_FILL 7 以直方网格填充 XHATCH_FILL 8 以斜网格填充 INTTERLEAVE_FILL 9 以间隔点填充 WIDE_DOT_FILL 10 以稀疏点填充 CLOSE_DOS_FILL 11 以密集点填充 USER_FILL 12 以用户定义式样填充 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 除 USER_FILL(用户定义填充式样 )以外 , 其它填充式样均可由 setfillstyle() 函数设置。 当选用 USER_FILL时 , 该函数对填充图模和颜色不作任何改变。 之所以定义 USER_FILL主要因为在获得有关填充信息时用到此项。 void far setfillpattern(char * upattern,int color)。 设置用户定义的填充图模的颜色以供对封闭图形填充。 其中 upattern 是一个指向 8个字节的指针。 这 8个字节定义了 8x8 点阵的图形。 每个字节的 8位二进制数表示水平 8点 , 8个字节表示 8行 , 然后以此为模型向个封闭区域填充。 void far getfillpattern(char * upattern)。 该函数将用户定义的填充图模存入 upattern指针指向的内存区域。 void far getfillsetings(struct fillsettingstype far * fillinfo)。 获得现行图模的颜色并将存入结构指针变量 fillinfo中。 其中 fillsettingstype结构定义如下 : struct fillsettingstype{ int pattern。 /* 现行填充模式 * / int color。 /* 现行填充模式 * / }。 有关图形填充图模的颜色的选择 , 请看下面例程。 例 11: include main(){ char str[8]={10,20,30,40,50,60,70,80}。 /*用户定义图模 */ int gdriver,gmode,i。 struct fillsettingstype save。 /*定义一个用来存储填充信息的结构变量 */ gdriver=DETECT。 initgraph(amp。 gdriver,amp。 gmode,c:\\tc)。 setbkcolor(BLUE)。 cleardevice()。 for(i=0。 i13。 i++) { setcolor(i+3)。 setfillstyle(i,2+i)。 /* 设置填充类型 * bar(100,150,200,50)。 /*画矩形并填充 */ bar3d(300,100,500,200,70,1)。 /* 画长方体并填充 */ pieslice(200, 300, 90, 180, 90)。 /*画扇形并填充 */ sector(500,300,180,270,200,100)。 /*画椭圆扇形并填充 */ 9 delay(1000)。 /*延时 1秒 */ } cleardevice()。 setcolor(14)。 setfillpattern(str, RED)。 bar(100,150,200,50)。 bar3d(300,100,500,200,70,0)。 pieslice(200,300,0,360,90)。 sector(500,300,0,360,100,50)。 getch()。 getfillsettings(amp。 save)。 /*获得用户定义的填充模式信息 */ closegraph()。 clrscr()。 printf(The pattern is %d, The color of filling is %d, , )。 /*输出目前填充图模和颜色值 */ getch()。 } 以上程序运行结束后 , 在屏幕上显示出现行填充图模和颜色的常数值。 三、任意封闭图形的填充。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。