C语言画图函数.docx
- 文档编号:3526161
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:34
- 大小:38.89KB
C语言画图函数.docx
《C语言画图函数.docx》由会员分享,可在线阅读,更多相关《C语言画图函数.docx(34页珍藏版)》请在冰豆网上搜索。
C语言画图函数
一、屏幕和视口设置与清除函数
36.setviewport()设置图形视口函数
37.clearviewport()清除图形视口函数
38.cleardevice()清除屏幕函数
39.getviewsettings()获取图形视口设置函数
二、调色板和颜色函数
40.setpalette()设置调色板函数
41.setallpalette()设置整个调色板函
42.setbackcolor()设置背景颜色函数
43.setcolor()设置颜色函数
44.getbkcolor()返回背景色函数
45.getcolor()返回当前绘图颜色
46.getmaxcolor()返回最大颜色值函数
47.getpalette()获取调色板函数
48.getpalettesize()返回调色板大小函数
49.getdefaultpalette()获取缺省调色板函数
三、屏幕位置函数
50.getmaxx()返回最大x坐标函数
51.getmaxy()返回最大y坐标函数
52.getx()返回x坐标函数
53.gety()返回y坐标函数
54.moveto()函数
55.moverel()相对移动函数
----------------------------------------------------
BorlandC++提供了一整套综合性的图形函数,上节介绍了其中有关图形显示的函数,本节介绍其中的绘图函数,下节将介绍它的图形文本函数。
一般绘图时,首先要清除屏幕,设置图形视口,设置绘图颜色,然后在屏幕上某个位置画点或直线或曲线等。
下面给出具有这些功能的函数。
一、屏幕和视口设置与清除函数
36.setviewport()设置图形视口函数
功能:
函数setviewport()设置当前图形视口。
用法:
函数调用方式为voidsetviewport(intleft,inttop,intright,intbottom,intclip);
说明:
参数left,top是左上角坐标,right,bottom是右下角坐标,它们都是绝对屏幕坐标。
传给setviewport()的第五个参数是clip,假如clip为1,则超出视口的输出图形自动被裁剪掉,即所有作图限制于当前图形视口之内,假如clip为0,则不做裁剪,即作图将无限制地扩展于视口周界之外,直到屏幕边界。
若无效参数传入setviewport(),则graphresult()函数返回值-11,先前视口设置仍有效。
setviewport()函数的对应头文件为graphics.h
返回值:
无
例:
建立对角为(6,6)和(88,88)的视口,并带有裁剪功能:
setviewport(6,6,88,88,1);
37.clearviewport()清除图形视口函数
功能:
函数clearviewport()清除当前图形视口,并把光标从当前位置移到原点(0,0)。
用法:
该函数调用方式为voidclearviewport(void);
说明:
此函数调用执行后,当前图形视口将不复存在。
这个函数对应的头文件是graphics.h
返回值:
无
例:
清除当前图形视口,但并非整个屏幕:
clearviewport();
38.cleardevice()清除屏幕函数
功能:
函数cleardevice()清除整个屏幕,并且将当前位置移到屏幕原点。
用法:
此函数调用方式为voidcleardevice(void);
说明:
该函数类似于文本模式下的函数clrscr(),但clrscr()函数不能在图形方式下工作;同样cleardevice()函数不能在文本模式下工作。
这个函数相应的头文件为graphics.h
返回值:
无
例:
清除当前整个屏幕:
cleardevice();
39.getviewsettings()获取图形视口设置函数
功能:
函数getviewsettings()返回当前图形视口坐标和裁剪标志,坐标是绝对屏幕坐标,裁剪标志1或0。
用法:
此函数调用方式为voidgetviewsettings(structviewporttype*info);
说明:
该函数执行后,把有关当前视口的信息装入info指向的viewporttype型结构中。
viewporttype结构定义如下:
structviewporttype{
intleft,top,right,bottom;
intclipflag;
}
这里left,top中存放视口左上角坐标,right,bottom中存放视口右下角坐标,clipflag中存放裁剪标志,若clipflag为1,执行裁剪以防止超出视口边界,假如clipflag为0,则不对超出边界输出作裁剪。
getviewsettings()函数对应的头文件是graphics.h
返回值:
无
例:
显示当前视口角点坐标:
structviewporttypeinfo;
getviewsettings(&info);
printf("left:
%dtop:
%d\n",info.left,info.top);
printf("right:
%dbottom:
%d\n",info.right,info.bottom);
二、调色板和颜色函数
进行图形显示或绘图,除了要知道用什么显示卡以及相应的图形驱动程序外,还必须了解它们支持什么样的调色板颜色。
40.setpalette()设置调色板函数
功能:
函数setpalette()可对调色板上的颜色的色彩值重新设定。
用法:
setpalette()函数调用方式为voidsetpalette(intvalue,intcolor);
说明:
参数value为色彩值,color为色彩值相应的颜色名。
当需要将一颜色指定为一色彩值地,即可调用此函数来设置。
表1-7 预先定义的调色板与色彩
-----------------------------------------------------------------
调色板 色彩0 色彩1 色彩2 色彩3
-----------------------------------------------------------------
C0 黑色 淡绿 红浅 黄色
C1 黑色 淡青 粉红 白色
C2 黑色 绿色 红色 棕色
C3 黑色 青色 品粉红 淡灰色
-----------------------------------------------------------------
这个函数相对应的头文件为graphics.h
返回值:
无
41.setallpalette()设置整个调色板函数
功能:
函数setallpalette()对某个调色板上的所有颜色重新设定彩色值。
用法:
函数调用方式为voidsetallpalette(structpalettetype*p);
说明:
在低分辨率图形显示模式下,该函数无效。
若函数调用成功,则把p指向的palettetype结构中的色彩值设置为当前调色板所有颜色的新色彩值。
palettetype结构定义如下:
structpalettetype{
unsignedcharsize;
signedcharcolor[16];
};
这里必须把size设置为调色板颜色的数目,并把每个色彩值都装入color数组相应元素中,然后才可用于调用函数。
此函数对应的头文件是graphics.h
返回值:
无
例:
把16色的EGA/VGA显示卡调色板改为其前16种颜色:
structpalettetype;
inti;
for(i=0;i<16;i++)p.color[i]=i;
p.size=16;
setallpalette(&p);
42.setbackcolor()设置背景颜色函数
功能:
函数setbackcolor()把当前调色板颜色的第一个值改成指定的颜色值,以设置背景颜色。
用法:
此函数调用方式为voidsetbackcolor(intcolor);
说明:
参数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()设置当前绘图颜色(或称做前景色)。
用法:
该函数调用方式为voidssetcolor(intcolor);
说明:
参数color为选择的当前绘图颜色。
在高分辨率显示模式下,选取的color是实际色彩值,也可以用颜色符号名表示。
假如已经摇篮函数setpalette()改变了调色板色彩值,那么符号名就不可能产生预期作用了。
在低分辨率显示模式(320X200)下,选取的color是调色板颜色号,不是实际色彩值。
此函数相应的头文件为graphics.h
返回值:
无
例:
设置16种不同的颜色,显示16段直线:
#include
voidmain()
{
intdriver,mode;
inti;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
moveto(0,200);
for(i=0;i<16;i++)
{
setcolor(i);
linerel(20,0);
}
getch();
restorecrtmode();
}
44.getbkcolor()返回背景色函数
功能:
函数getbackcolor()返回当前背景颜色。
用法:
函数调用方式为intgetbackcolor(void);
说明:
调用该函数后,获得背景色,但其值不一定是调色板上的色彩值。
这个函数对应的头文件是graphics.h
返回值:
返回当前绘图色彩值。
例:
返回当前背景色彩值:
printf("backgroundcoloris%d",getbkcolor());
45.getcolor()返回当前绘图颜色
用法:
此函数调用方式为intgetcolor(void);
说明:
对于使用彩色低分辨率显示模式调色板,返回值是调色板颜色号,而不是实际颜色值,对于高分辨率显示模式,返回值对应于颜色值,除非调色板颜色已被函数setpalette()或setallpalette()改变了。
这个函数相应的头文件为graphics.h
返回值:
返回当前绘图颜色值。
例:
printf("drawingcoloris%d",getcolor());
46.getmaxcolor()返回最大颜色值函数
用法:
函数调用方式为intgetmaxcolor(void);
说明:
该函数调用后,在低分辨率模式下返回值为3(这种模式下有效颜色值为0至3);在高分辨率显示模式下返回值可以是256或更高(此模式下有效颜色值为0至256或更高)。
这个函数相应的头文件为graphics.h
返回值:
返回当前图形模式下最大颜色值。
例:
显示最大有效颜色值:
#include
voidmain()
{
intdriver,mode;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
printf(";largestcolor:
%d",getmaxcolor());
getch();
restorecrtmode();
}
47.getpalette()获取调色板函数
功能:
函数getpalette()将当前调色板的值填入palettetype型结构中。
用法:
getpalette()函数调用方式为voidgetpalette(structpalettetype*p);
说明:
此函数调用执行后,当前调色板的值被装入p指向的结构里;从而可从该结构中获得这个调色板的设置信息。
palettetype型结构定义如下
#defineMAXCOLORS15
structpalettetype{
unsignedcharsize;
signedcharcolors[MAXCOLORS+1];
};
其中size用于存放当前调色板的有效颜色个数;colors数组的每一元素中装入调色板的一个相应颜色值。
表1-9列出了这些颜色值(适用于EGA/VGA)
---------------------------------------------------
颜色符号名 色彩值
---------------------------------------------------
EGA_BLACK(EGA黑色) 0
EGA_BLUE(EGA蓝色) 1
EGA_GREEN(绿色) 2
EGA_CYAN(EGA青色) 3
EGA_RED(红色) 4
EGA_MAGENTA(EGA品红) 5
EGA_BROWN(EGA棕色) 20
EGA_LIGHTGRAY(EGA淡灰) 7
EGA_DARKGRAY(EGA深灰) 56
EGA_LIGHTBLUE(EGA淡蓝) 57
EGA_LIGHTGREEN(EGA淡绿) 58
EGA_LIGHTCYAN(EGA淡青) 59
EGA_LIGHTRED(EGA淡红) 60
EGA_LIGHTMAGENTA(EGA粉红) 61
EGA_YELLOW(EGA黄色) 62
EGA_WHITE(EGA白色) 63
---------------------------------------------------
getpalette()函数对应的头文件是graphics.h
返回值:
无
例:
显示由自动检测所得显示模式支持的调色板上的颜色数目:
#include
voidmain()
{
intdriver,mode;
structpalettetypep;
driver=DETECT; //自动检测
mode=0;
initgraph(&driver,&mode,"");
getpalette(7p);
printf("numberofcolorspalette:
%d",p.size);
getch();
restorecrtmode();
}
48.getpalettesize()返回调色板大小函数
功能:
函数getalettesize()返回调色板的颜色数目。
用法:
该函数调用方式为intgetpalettesize((void);
说明:
调用这个函数后,就知道调色板上有多少颜色数目可在当前显示模式下设置。
此函数对应的头文件是graphics.h
返回值:
返回当前显示模式支持的调色板的颜色数目。
例:
显示当前显示模式支持的调色板的颜色数目。
intnumber;
number=getpalettesize();
printf("palettesize:
%d",number);
49.getdefaultpalette()获取缺省调色板函数
功能:
函数getdefaultpalette()返回指向缺省调色板的指针。
用法:
该函数调用方式为structpalettetype*getdefaultpalette(void);
说明:
调色板结构类型palettetype定义如下:
#defineMAXCOLORS15
structpalettetype{
unsignedcharsize;
signedcharcolors[MAXCOLORS+1];
};
在调用initgraph()初始化图形系统时,给调色板结构类型变量赋值,作为缺省调色板,调用这个函数可返回指向它的指针。
此函数相应的头部文件为graphics.h
返回值:
返回指向缺省调色板(结构)的指针。
例:
显示图形系统初始化后所支持的调色板上的各种颜色。
#include
#include
#include
#include
voidmain()
{
intgraphdriver=DETECT,graphmode;
structpalettetype*palette;
interrorcode,color;
initgraph(&graphdriver,&graphmode,"");
errorcode=graphresult();
if(errorcode!
=grOK){
printf("Graphicserror%s\n",grapherrormsg(errorcode));
exit
(1);
}
palette=getdefaultpalette();
printf("palette->size%d\n",palette->size);
getch();
for(color=0;color
{
setfillstyle(LINE_FILL,color);
bar(20*(color-1),0,20*color,20);
getch();
}
if(palette->size>1){
do
setpalette(random(palette->size),random(palette->size));
while(!
kbhit());
getch();
}
setallpalette(palette);
closegraph();
}
三、屏幕位置函数
在图形模式下,字符屏幕坐标被像素坐标取代了,这种像素坐标根据不同的显示硬件,水平与垂直方向的分辨率可以从320X200变化到1280X1024等。
由于分辨率的变化,以致要加载合适的图菜驱动程序,因此大多数图形程序是通过检测硬件开始的,然后使用getmaxx()和getmaxy()等函数来决定屏幕尺寸,调整随后的操作来适应这些屏幕限制。
50.getmaxx()返回最大x坐标函数
功能:
函数getmaxx()返回当前图形模式下的最大x坐标,即最大横向坐标。
用法:
函数调用方式为intmaxx(void);
说明:
此函数独立于图形视口设置,仅取决于显示卡的显示模式相应的分辨率。
这个函数对应的头文件是graphics.h
返回值:
返回当前显示模式最大x坐标值。
例:
使用本函数的例子见51.getmaxy()函数的例子中。
51.getmaxy()返回最大y坐标函数
功能:
函数getmaxy()返回当前图形模式下的最大y坐标,即最大纵向坐标。
用法:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 画图 函数
![提示](https://static.bdocx.com/images/bang_tan.gif)