功能: 函数bar()用当前填充图样和填充色(注意不是给图色)画出一个指定上左上角与右下角的实心长条形(长方块或正方块),但没有四条边线)。 用法: bar()函数调用方式为void bar(int left,int top,int right,int bottom); 说明: 参数left,topright,bottom分别为左上角坐标与右下角坐标,它们和调用函数rectangle()的情形相同,调用此函数前,可用setfillstyle()或setfillpattern()设置当前填充图样和填充色。
注意此函数只画没有边线的条形,如果要画有边线的的条形,可调用下面的函数bar3d()来画,并将深度参数设为0,同时topflag参数要设置为真,否则该条形无顶边线。
这 应的头文件为graphics.h 返回值: 无
例: 见函数bar3d()中的实例。
66.bar3d() 画条块函数
功能: 函数bar3d() 使用当前绘图色、线型及线宽画出三维长方形条块,并用当前填充图样和填 充色填充该三维条块的表面。
用法: 此函数调用方式为void bar3d(int left,int top,int right,int bottom,int depth,int topflag);
说明: 参数left,top,right,bottom分另为左上角与右下角坐标,这与bar()函数中的一样。参数depth为条块的深度,以像素为单位,通常按宽度的四分之一计算。深度方向通过屏显纵横比调节为约45度(即这时x/y比设置为1:1)。 参数topflag相当于一个布尔参数,如果设置为1(真)那么条块上放一顶面;若设置为0(假),则三维条形就没有顶面,这样可使多个三维条形叠加在一起。 要使图形更加美观,可利用函数floodfill()或setfillpattern()来选择填充图样和填充色(参见本小节(五)填充函数 )。 bar3d()函数对应的头文件为graphics.h 返回值: 无
例: 下面的程序画一个条形和条块: #i nclude
int driver,mode; driver=DETECT; mode=0;
initgraph(&driver,&mode,\setfillstyle(SOLID-FILL,GREEN); bar(60,80,220,160);
setfillstyle(SOLID-FILL,RED); bar3d(260,180,360,240,20,1); getch();
restorecrtmode(); }
(四)、 圆、弧和曲线函数
在一个屏幕上画得很圆的图形到另一个屏幕上可能被压扁或拉长,这是因为每一种显示卡与之相应的显示模式都有一个纵横比。纵横比是指像素的水平方向大小与垂直方向大小的比值。如VGA显示卡由于偈素基本上是正方形,所以纵横比为1.000。
为了保证几何图形基本按预计情况显示在屏幕上,用屏显的纵横比来计算和纠正不同硬件及显示卡产生的畸变。计算纵横比所需要的水平方向和垂直方向的比例系数可调用函数getaspectratio()获得。
69. circle()画圆函数
功能: 函数circle()使用当前绘图色并以实线画一个完整的圆。 用法:该函数调用方式为void circle(int x,int y,int radius);
说明: 参数x,y为圆心坐标,radius为圆半径,用像素个素表示。注意,调用circle()函数画圆时不用当前线型。
不同于ellipse()函数,只用单个半径radius参数调用circle()函数,故屏显纵横比可以自动调节,以产生正确的显示图。 此函数对应的头文件为graphics.h 返回值: 无
例: 画六个同心圆,圆心在(100,100)。 #i nclude
int driver,mode; driver=DETECT; mode=0;
initgraph(&driver,&mode,\circle(100,100,10); circle(100,100,20); circle(100,100,30); circle(100,100,40); circle(100,100,50); circle(100,100,60); getch();
restorecrtmode(); }
70. arc() 画圆弧函数
功能: 函数arc()使用当前绘图色并以实线画一圆弧。
用法: 函数调用方式为void arc(int x,int y,int startangle,int endangle,int radius);
说明: 参数x,y为圆心坐标,startangle与endangle分别为起始角与终止角,radius为半径。圆心坐标和半径以像素个数给出,起始角和终止角以度为单位,0度位于右边,90度位于顶部,180度位于左边,底部是270度。同往常一样,360度与0度重合。角度按逆时针方向增加,但并不要求终止角一定比起始角大。
例如指定300度和90度分别为起始角和终止角,与指定300度和450度分别为起始角和终止角可画出相同的弧。大于360度可作为参数,它将被化到0度 ̄360度范围里。函数arc()能画封闭圆,只要取起始角为0度,终止角为360度即可。此函数中,屏显纵横比可自动调节。 arc()函数对应的头文件为graphics.h 返回值: 无
例: 以(200,200)为圆心,100为半径,从0度到120度画圆弧: #i nclude int driver,mode; driver=DETECT; mode=0; initgraph(&drivwer,&mode,\setcolor(WHITE); arc(200,200,0,120,100); getch(); restorecrtmode(); } 42. setbackcolor() 设置背景颜色函数 43. setcolor() 设置颜色函数 42. setbackcolor() 设置背景颜色函数 功能: 函数setbackcolor()把当前调色板颜色的第一个值改成指定的颜色值,以设置背景颜色。 用法: 此函数调用方式为void setbackcolor(int color); 说明: 参数color为指定的背景色,其有效值可以是颜色符号名,也可以是色彩值。表1-8列出了背景颜色供选取。 表1-8 背景颜色值 ----------------------------------------------------------------- 颜色符号名 色彩值 颜色符号名 色彩值 ----------------------------------------------------------------- BLACK(黑色) 0 DARKGRAY(深灰) 8 BLUE(蓝色) 1 LIGHTBLUE(淡蓝) 9 GREEN(绿色) 2 LIGHTGREEN(淡 绿) 10 CYAN(青色) 3 LIGHTCYAN(淡青) 11 RED(红色) 4 LIGHTRED(淡红) 12 MAGENTA(品红) 5 LIGHTMAGENTA(粉红) 13 BROWN(棕色) 6 YELLOW(黄色) 14 LIGHTGRAY(淡灰) 7 WHITE(白色) 15 ----------------------------------------------------------------- 调用该函数,将改变整个屏幕的颜色,如果新的背景色与原来屏幕的图形颜色相同,尽管图形信息不会丢失,但是看不见图形了。如果所选背景色为对比鲜明的颜色,看不见的图形就会重新清晰地显现出来。 这个函数的头文件为graphics.h 返回值: 无 例: 把背景色置为淡蓝色 setbackcolor(LIGHTBLUE); 43. setcolor() 设置颜色函数 功能: 函数setcolor()设置当前绘图颜色(或称做前景色)。 用法: 该函数调用方式为voids setcolor(int color); 说明: 参数color为选择的当前绘图颜色。在高分辨率显示模式下,选取的color是实际色彩值,也可以用颜色符号名表示。如果已经摇篮函数setpalette()改变了调色板色彩值,那么符号名就不可能产生预期作用了。 在低分辨率显示模式(320X200)下,选取的color是调色板颜色号,不是实际色彩值。 此函数相应的头文件为graphics.h 返回值: 无 例: 设置16种不同的颜色,显示16段直线: #i nclude int driver,mode; int i; driver=DETECT; mode=0; initgraph(&driver,&mode,\ moveto(0,200); for(i=0;i<16;i++) { setcolor(i); linerel(20,0); } getch(); restorecrtmode(); } 44、restorecrtmode(); 复原函数