版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、l屏幕文本输出屏幕文本输出l图形程序设计图形程序设计l硬件驱动硬件驱动l键盘鼠标输入方法编程键盘鼠标输入方法编程l其它高级编程技术其它高级编程技术l1.11.1文本方式的控制文本方式的控制l1.21.2窗口设置和文本输出函数窗口设置和文本输出函数l1.31.3清屏和光标操作函数清屏和光标操作函数l1.41.4屏幕文本移动与存取函数屏幕文本移动与存取函数l1.51.5状态查询函数状态查询函数l文本方式就是显示文本的模式,它的显文本方式就是显示文本的模式,它的显示单位是字符而不是图形方式下的象素,示单位是字符而不是图形方式下的象素,在屏幕上显示字符的位置坐标用行和列在屏幕上显示字符的位置坐标用行和
2、列表示。表示。l缺省方式下,每屏为缺省方式下,每屏为8080列列2525行,行,Turbo CTurbo C规定屏的左上角为规定屏的左上角为l l行行l l列,屏的右下角列,屏的右下角为为2525行行8080列。列。lTurbo CTurbo C支持的文本显示方式有支持的文本显示方式有5 5种,它种,它们可以用文本显示方式设置函数来进行们可以用文本显示方式设置函数来进行设置。设置。其中newmode的值可分别为:l04025黑白显示l14025彩色显示l28025黑白显示l38025彩色显示l78025单色显示l-1上一次的显示方式l文本颜色设置函数文本颜色设置函数void textcolor
3、(int void textcolor(int color)color)控制文本显示的前景色,即字符显控制文本显示的前景色,即字符显示的颜色,其参数示的颜色,其参数colorcolor仅能选择仅能选择1717种颜色,种颜色,即值为即值为016016。l文 本 背 景 颜 色 设 置 函 数文 本 背 景 颜 色 设 置 函 数 v o i d v o i d textbackground(int color)textbackground(int color)设置文本显设置文本显示的背景颜色,其参数示的背景颜色,其参数colorcolor仅能选择仅能选择8 8种颜色,种颜色,即值为即值为0707
4、。l文本属性设置函数文本属性设置函数void textattr(int void textattr(int attr)attr)设置字符显示的颜色,背景色,字设置字符显示的颜色,背景色,字符显示是否闪烁,显示属性参数符显示是否闪烁,显示属性参数attrattr可用一个可用一个字节即字节即8 8位来描述。位来描述。lvoid highvideo(void)用高亮度显示字符。lvoid lowvideo(void)用低亮度显示字符。lvoid normvideo(void)将设置通常亮度显示字符。l在文本方式下,没进行窗口设置时,即在文本方式下,没进行窗口设置时,即窗口设置缺省时,认为整个屏幕为显
5、示窗口设置缺省时,认为整个屏幕为显示窗口,窗口,lTurbo CTurbo C提供了窗口设置函数提供了窗口设置函数window()window(),可由用户根据自己的需要来重新设定显可由用户根据自己的需要来重新设定显示窗口。当设定后,以后的控制台示窗口。当设定后,以后的控制台I/OI/O操操作作( (即文本输入输出即文本输入输出) ),就可均在此窗口,就可均在此窗口中进行。中进行。lvoid window(int x1void window(int x1,int y1int y1,int x2int x2,int y2)int y2);l其中其中( (x1x1,y1)y1)为窗口的左上角坐标,
6、为窗口的左上角坐标,( (x2x2,yz)yz)为窗口的右下角坐标,这些坐标是以为窗口的右下角坐标,这些坐标是以整个屏幕为参考坐标系。整个屏幕为参考坐标系。l利用窗口函数可以在屏幕上定义多个不利用窗口函数可以在屏幕上定义多个不同窗口,以显示不同的信息。同窗口,以显示不同的信息。lprintf()printf(),putc()putc(),puts()puts(),putchar()putchar()和输和输出函数以整个屏幕为窗口的,它们不受由出函数以整个屏幕为窗口的,它们不受由windowwindow设置的窗口限制,也无法用函数控制它设置的窗口限制,也无法用函数控制它们输出的位置。们输出的位置
7、。lTurbo CTurbo C提供了三个文本输出函数,提供了三个文本输出函数, int int cprintf(char cprintf(char * *formatformat,) );int int cputs(char cputs(char * *str)str);int putch(int ch)int putch(int ch);它它们受窗口的控制,窗口内显示光标的位置,就们受窗口的控制,窗口内显示光标的位置,就是它开始输出的位置。是它开始输出的位置。lvoid clrscr(void)void clrscr(void);清除窗口中的文本,清除窗口中的文本,并将光标移到当前窗口的左
8、上角,即并将光标移到当前窗口的左上角,即(1, (1, 1)1)处。处。l void clreol(void)void clreol(void);除当前窗口中从除当前窗口中从光标位置开始到本行结尾的所有字符,光标位置开始到本行结尾的所有字符,但不改变光标原来的位置。但不改变光标原来的位置。l void delline(void)void delline(void);删除一行字符,删除一行字符,该行是光标所在行。该行是光标所在行。lvoid gotoxy(int xvoid gotoxy(int x,int y)int y);把光标移把光标移到窗口内的到窗口内的( (x x,y)y)处,处,x
9、x,y y坐标是相对坐标是相对窗口而言。它多和窗口而言。它多和cprintfcprintf函数配合,以函数配合,以指定输出开始位置。指定输出开始位置。lvoid movetext(int x1void movetext(int x1,int y1int y1,int int x2x2,int y2int y2,int x3int x3,int y3)int y3);l该函数将把屏幕上左上角为该函数将把屏幕上左上角为( (xlxl,y1)y1),右下角右下角为为( (x2x2,y2)y2)的矩形内文本拷贝到左上角为的矩形内文本拷贝到左上角为( (x3x3,y3)y3)的一个新矩形区内。这里的一个
10、新矩形区内。这里x x,y y坐标是以整坐标是以整个屏幕为窗口坐标系,即屏幕左上角为个屏幕为窗口坐标系,即屏幕左上角为(1(1,1)1)。l该函数与开设的窗口无关,且原矩形区文本不该函数与开设的窗口无关,且原矩形区文本不变。变。1、存文本函数存文本函数void gettext(int xlvoid gettext(int xl,int int y1y1,int x2int x2,int y2int y2,void void * *buffer)buffer);把左把左上角为上角为( (xlxl,y1)y1),右下角为右下角为( (x2x2,y2)y2)的矩形区的矩形区内的文本存到由指针内的文本
11、存到由指针bufferbuffer指向的一个内存缓指向的一个内存缓冲区内。冲区内。2 2、取文本函数、取文本函数void puttext(int x1void puttext(int x1,int int y1y1,int x2int x2,int y2int y2,void void * *buffer)buffer);把由把由bufferbuffer指针指向的缓冲区内所存文本复制到屏指针指向的缓冲区内所存文本复制到屏幕上一矩形区内,该矩形区左上角为幕上一矩形区内,该矩形区左上角为( (x1x1,y1)y1),右下角为右下角为( (x2x2,y2)y2)。lvoid gettextinfo(
12、struct text_info *f);l这里的text_info是在conio.h头文件中定义的一个结构;l显示当前屏幕的显示方式,当前窗口的坐标、当前光标的位置,文本的显示属性等。lTurbo CTurbo C为用户提供了一个功能很强的画图软为用户提供了一个功能很强的画图软件库,它又称为件库,它又称为BorlandBorland图形接口图形接口( (BGI)BGI),它包它包括图形库文件括图形库文件( (graphics.lib)graphics.lib),图形头文件图形头文件( (graphics.h)graphics.h)和许多图形显示器和许多图形显示器( (图形终端图形终端) )的
13、的驱动程序驱动程序( (如如CGA.BGICGA.BGI、EGAVGA.BGIEGAVGA.BGI等等) )。及一。及一些字符集的字体驱动程序些字符集的字体驱动程序( (如如goth.chrgoth.chr黑体字黑体字符集等符集等) )。l编写图形程序时用到的一些图形库函数均在编写图形程序时用到的一些图形库函数均在graphics.libgraphics.lib中,执行这些函数时,所需的有中,执行这些函数时,所需的有关信息关信息( (如宏定义等如宏定义等) )则包含在则包含在graphics.hgraphics.h头文头文件中。件中。l显示器的屏幕如同一张坐标纸,显示器的屏幕如同一张坐标纸,在
14、其上显示图形时,图形上任一在其上显示图形时,图形上任一点的位置均有确定的坐标,即可点的位置均有确定的坐标,即可用用x x,y y坐标值来表示。坐标值来表示。l显示器显示的图形均由一些圆点组成显示器显示的图形均由一些圆点组成( (其其亮度、颜色不同亮度、颜色不同) ),这些点称为象素,这些点称为象素( (或或称象点称象点) ),它们是组成图形的最小单位。,它们是组成图形的最小单位。l象素的大小可以通过设置不同的显示方象素的大小可以通过设置不同的显示方式来改变。象素在屏幕上的位置则可由式来改变。象素在屏幕上的位置则可由其所在的其所在的x x,y y坐标来决定。坐标来决定。l计算机中要显示的字符和图
15、形均以数字形式存储在存计算机中要显示的字符和图形均以数字形式存储在存储器中,而显示器接收的应是模拟信号。储器中,而显示器接收的应是模拟信号。l常用的显示器有三条模拟红绿兰颜色的模拟信号输入常用的显示器有三条模拟红绿兰颜色的模拟信号输入线,每条输入线的电压决定了颜色的亮度,只要能产线,每条输入线的电压决定了颜色的亮度,只要能产生出可区分的电压来,它们不同的组合,便可使显示生出可区分的电压来,它们不同的组合,便可使显示器显示出不同的颜色来。器显示出不同的颜色来。l插在插在PCPC微机插槽中的图形卡微机插槽中的图形卡( (即适配器即适配器) ),其作用就是,其作用就是将要显示的字符和图形以数字形式存
16、储在卡上的视频将要显示的字符和图形以数字形式存储在卡上的视频存储器存储器VRAMVRAM中,再将其变成视频模拟信号送往相应适中,再将其变成视频模拟信号送往相应适配的显示器进行显示,也即适配器在计算机主机和显配的显示器进行显示,也即适配器在计算机主机和显示器之间起到了信息转换和视频发送作用。示器之间起到了信息转换和视频发送作用。l由于计算机配有的显示器种类不同,因而适配器种类由于计算机配有的显示器种类不同,因而适配器种类不同不同l1 1单色显示适配器单色显示适配器( (MDA)MDA);仅显示一种颜色,仅支持仅显示一种颜色,仅支持80802525行的字符显示。行的字符显示。l2 2彩色图形适配器
17、彩色图形适配器( (CGA)CGA);这是这是PC/XTPC/XT等微机配用的显等微机配用的显示器图形卡,它可以产生单色或彩色字符和图形。示器图形卡,它可以产生单色或彩色字符和图形。l3 3增强型图形适配器增强型图形适配器EGA)EGA);除支持除支持CGACGA的四种显示的四种显示模式外,还增加了分辨率为模式外,还增加了分辨率为640640200200的的1616色显示方式,色显示方式, ( (EGAHI)EGAHI),也可显示也可显示1616色。色。l4 4视频图形阵列适配器视频图形阵列适配器( (VGA)VGA);它是目前流行的它是目前流行的PCPC微微机显示标准,它支持机显示标准,它支
18、持CGACGA,EGAEGA的所有显示方式,但自的所有显示方式,但自己还有己还有640640480480的高分辨显示方式的高分辨显示方式( (VGAHI)VGAHI)、640640350350的中分辨显示方式的中分辨显示方式( (VGAMED)VGAMED)和和640640200200的低分辨显示的低分辨显示方式方式( (VGALO)VGALO),它们均可有它们均可有1616种显示颜色可供选择。种显示颜色可供选择。l5 5TVGATVGA;它是目前市面上最流行的它是目前市面上最流行的PC 486PC 486,586586微机配的显示器标准,在图形方式下,它微机配的显示器标准,在图形方式下,它可
19、有可有640640400400,640640480480,800800600600,10241024768768及及76876810241024等分辨率,可选颜色达等分辨率,可选颜色达256256种,在文本方式下,可支持种,在文本方式下,可支持2525、3030、4343、6060行,行,132132列的字符显示。它也兼容列的字符显示。它也兼容CGACGA、EGAEGA、VGAVGA的显示方式,由于的显示方式,由于Turbo CTurbo C早于该产品出现,早于该产品出现,因而上述增强了的显示方式均不支持,但对于因而上述增强了的显示方式均不支持,但对于高级编程者,可通过对高级编程者,可通过对T
20、VGATVGA各专用寄存器直接各专用寄存器直接编程来实现这些功能。编程来实现这些功能。l6 6PVGAPVGA;它是它是paradise VGAparadise VGA的缩写,它由的缩写,它由Western DigitalWestern Digital公司生产,有的叫公司生产,有的叫SVGA(SVGA(香港香港SurperkingSurperking公司生产的公司生产的386386微机上使用微机上使用) )。还有。还有称为称为EVGA(Extended VGA)EVGA(Extended VGA),它们和它们和PVGAPVGA在软硬在软硬件上均是兼容的。件上均是兼容的。PVGAPVGA完全兼容
21、完全兼容CGACGA、EGAEGA、VGAVGA的所有工作方式,它还有自己一些特有的的所有工作方式,它还有自己一些特有的工作模式,与工作模式,与TVGATVGA类似。类似。l7 7XGAXGA;XGAXGA是是IBMIBM公司新推出的一种增强性图公司新推出的一种增强性图形适配器,它是形适配器,它是VGAVGA的换代产品,具有更高的的换代产品,具有更高的分辨率和性能,它有和分辨率和性能,它有和CGACGA,EGAEGA,VGAVGA全兼容全兼容的工作方式,但显示速度却比的工作方式,但显示速度却比VGAVGA快一倍。快一倍。l8 8CVGACVGA;这是国内研制的带有显示汉字这是国内研制的带有显示
22、汉字功能的功能的VGAVGA图形适配器,它带有汉字字库,图形适配器,它带有汉字字库,该适配器提供了和该适配器提供了和CGACGA、EGAEGA、VGAVGA全兼容全兼容的工作方式,还提供了在文本工作方式的工作方式,还提供了在文本工作方式下的高分辨图形显示功能。在它的下的高分辨图形显示功能。在它的ROM ROM BIOSBIOS中提供了中提供了INT10HINT10H的功能号为的功能号为3030H H38H38H的功能调用,因而提供了方便的汉字的功能调用,因而提供了方便的汉字处理功能。处理功能。l文本方式或称字符显示方式文本方式或称字符显示方式l图形显示方式图形显示方式l它们的主要差别是显示存储
23、器它们的主要差别是显示存储器( (VRAM)VRAM)中存的信中存的信息不同。字符方式时,息不同。字符方式时,VRAMVRAM存放要显示字符的存放要显示字符的ASCIIASCII码,用它作为地址,取出字符发生器码,用它作为地址,取出字符发生器ROM(ROM(固定存储器固定存储器) )中存放的相应字符的图象中存放的相应字符的图象( (又又称字模称字模) ),变成视频信号在显示器屏上进行显,变成视频信号在显示器屏上进行显示。图形方式时,则要显示的图形的图象直接示。图形方式时,则要显示的图形的图象直接存在存在VRAMVRAM中,中,VRAMVRAM中某地址单元存放的数就表中某地址单元存放的数就表示了
24、相应屏幕上某行和列上的象素及颜色。示了相应屏幕上某行和列上的象素及颜色。l1 1MCGA(MCGA(多色图形阵列多色图形阵列) );它和;它和VGAVGA是是PS/2PS/2系列微机的系列微机的主要适配器,主要适配器,MCGAMCGA功能上同功能上同CGACGA相似,它和相似,它和CGACGA是部分是部分兼容的,但有些功能又和兼容的,但有些功能又和VGAVGA类似,可有类似,可有640640480480的二的二色模式。色模式。l2 2IBM8514IBM8514;该适配器可插入该适配器可插入PS/2PS/2微机中,它有较强微机中,它有较强的图形功能,最高分辨率可达的图形功能,最高分辨率可达10
25、241024768768,可有,可有256256种种颜色。颜色。l3 3HERCHERC;大力神公司生产的一种单色适配器,是大力神公司生产的一种单色适配器,是PCPC系系列微机早期的第三种显示标准列微机早期的第三种显示标准( (其它两种其它两种MDAMDA和和CGA)CGA),它采用它采用720720348348高分辨单色显示模式。高分辨单色显示模式。l4 4EGAMONOEGAMONO;EGAEGA单色适配器,它只有一种单色适配器,它只有一种640640350350单单色显示模式。色显示模式。l即要用什么类型的图形显示适配器的驱即要用什么类型的图形显示适配器的驱动程序,动程序,l采用什么模式
26、的图形方式采用什么模式的图形方式( (也就是相应程也就是相应程序的入口地址序的入口地址) ),l适配器驱动程序的寻找路径名。适配器驱动程序的寻找路径名。l注意:所用系统的显示适配器一定要支注意:所用系统的显示适配器一定要支持所选用的显示模式,否则将出错。持所选用的显示模式,否则将出错。lvoid far initgraph(int far void far initgraph(int far * *driverdriver,int far int far * *modemode,char far char far * *path_for_driver)path_for_driver);lvoi
27、d far detectgraph(int far void far detectgraph(int far * *graphdrivergraphdriver,int far int far * *graphmode)graphmode);l它完成对适配器的检查并得到显示器类它完成对适配器的检查并得到显示器类型号和相应的最高分辨率模式,若所设型号和相应的最高分辨率模式,若所设适配器不是规定的那些类型,则返回适配器不是规定的那些类型,则返回-2-2,表示适配器不存在。表示适配器不存在。lvoid far cleardevice(void)void far cleardevice(void);该
28、函数该函数作用范围为整个屏幕。作用范围为整个屏幕。lvoid far clearviewport(void);void far clearviewport(void);如果用如果用函数函数setviewportsetviewport定义一个图视窗口,则定义一个图视窗口,则可用清除图视口函数,它仅清除图视口可用清除图视口函数,它仅清除图视口区域内的内容。区域内的内容。 l当画图程序结束,回到文本方式时,要关闭图当画图程序结束,回到文本方式时,要关闭图形 系 统 , 回 到 文 本 方 式 , 用形 系 统 , 回 到 文 本 方 式 , 用 v o i d f a r v o i d f a r
29、 closegraph(void)closegraph(void);l为了不关闭图形系统,使相应适配器的驱动程为了不关闭图形系统,使相应适配器的驱动程序和字符集序和字符集( (字库字库) )仍驻留在内存,但又回到原仍驻留在内存,但又回到原来所设置的模式,则可用恢复工作模式函数来所设置的模式,则可用恢复工作模式函数void far restorecrtmode(void)void far restorecrtmode(void);它也同时它也同时进行清屏操作。该函数常和另一设置图形工作进行清屏操作。该函数常和另一设置图形工作模式函数模式函数setgraphmodesetgraphmode交互使用
30、,使得显示器交互使用,使得显示器工作方式在图形和文本方式之间来回切换。工作方式在图形和文本方式之间来回切换。l图形由点、线、面组成,图形由点、线、面组成,Turbo Turbo C C提供了一些函数,以完成这些提供了一些函数,以完成这些操作。操作。lvoid far putpixel(int xvoid far putpixel(int x,int yint y,int int color);color);它表示在指定的它表示在指定的x x,y y位置画一点,位置画一点,点的显示颜色由设置的点的显示颜色由设置的colorcolor值决定,关值决定,关于颜色的设置,将在设置颜色函数中介于颜色的设
31、置,将在设置颜色函数中介绍。绍。l该函数的相对应函数是取象素值函数该函数的相对应函数是取象素值函数int int far getpixel(int xfar getpixel(int x,int y)int y);得到在得到在( (x x,y)y)点位置上的象素的颜色值。点位置上的象素的颜色值。移动画笔到指定的移动画笔到指定的( (x x,y)y)位置,移动过程不画:位置,移动过程不画:void far moveto(int xvoid far moveto(int x,int y)int y);画笔从现行位置画笔从现行位置( (x x,y)y)处移到一位置增量处处移到一位置增量处( (x+d
32、xx+dx,y+dx)y+dx),移动过程不画:移动过程不画:void far moverel(int dxvoid far moverel(int dx,int dy)int dy);得到当前画笔所在位置得到当前画笔所在位置int far getx(void)int far getx(void);得到当前画笔的得到当前画笔的x x位置位置int far gety(void)int far gety(void);得到当前画笔的得到当前画笔的y y位置位置两点之间画线函数。两点之间画线函数。void far line(int x0void far line(int x0,int y0int y0
33、,int x1int x1,int int y1)y1);从从( (x0 x0,y0)y0)点到点到( (x1x1,y1)y1)点画一直线。点画一直线。从现行画笔位置到某点画线函数。从现行画笔位置到某点画线函数。void far lineto(int xvoid far lineto(int x,int y)int y);将从现行画笔位置到将从现行画笔位置到( (x x,y)y)点画一直线。点画一直线。从现行画笔位置到一增量位置画线函数从现行画笔位置到一增量位置画线函数void far linerel(int dxvoid far linerel(int dx,int dy)int dy);将
34、从现行画笔位置将从现行画笔位置( (x x,y)y)到位置增量处到位置增量处( (x+dxx+dx,y+dy)y+dy)画一直线。画一直线。# #include include main()main() int graphdriver=VGA;int graphdriver=VGA;int graphmode=VGAHI;int graphmode=VGAHI;initgraph(&graphdriver,&graphmode,);initgraph(&graphdriver,&graphmode,);cleardevice();cleardevice();mo
35、veto(100,20);moveto(100,20);lineto(100,80);lineto(100,80);moveto(200,20);moveto(200,20);lineto(100,80);lineto(100,80);line(100,90,200,90);line(100,90,200,90);linerel(0,20);linerel(0,20);moverel(-100,0);moverel(-100,0);linerel(30,20);linerel(30,20);getch();getch();closegraph();closegraph();l画矩形函数画矩形函
36、数lvoid far rectangle(int xlvoid far rectangle(int xl,int y1int y1,int int x2x2,int y2)int y2);l该函数将以该函数将以( (x1x1,y1)y1)为左上角,为左上角,( (x2x2,y2)y2)为右为右下角画一矩形框。下角画一矩形框。l画条形图函数画条形图函数lvoid bar(int x1void bar(int x1,int y1int y1,int x2int x2,int y2)int y2);l该函数将以该函数将以( (xlxl,y1)y1)为左上角,为左上角,( (x2x2,y2)y2)为右
37、为右下角画一实形条状图,没有边框,图的颜色和下角画一实形条状图,没有边框,图的颜色和填充模式可以设定填充模式可以设定。l编写程序,由编写程序,由rectanglerectangle函数以函数以(100(100,20)20)为左上角,为左上角,(200(200,50)50)为右下角画一矩形,为右下角画一矩形,接着由接着由barbar函数以函数以(100(100,80)80)为左上角,为左上角,(150(150,180)180)为右下角画一实形条状图,为右下角画一实形条状图,用缺省颜色用缺省颜色( (白色白色) )填充。填充。# #include include main()main()int g
38、raphdriver=DETECTint graphdriver=DETECT;int graphmode,xint graphmode,x;initgraph(&graphdriver,&graphmode,initgraph(&graphdriver,&graphmode,”) );cleardevice()cleardevice();rectangle(100rectangle(100,2020,200200,50)50);bar(100bar(100,8080,150150,180)5180)5getch()getch();closegraph()clo
39、segraph(); 画椭圆函数画椭圆函数void ellipse(int xvoid ellipse(int x,int yint y,int stangleint stangle,int endangelint endangel,int xradiusint xradius,int yradius)int yradius);该函数将以该函数将以( (x x,y)y)为中心,以为中心,以xradiusxradius和和yradiusyradius为为x x轴和轴和y y轴半径,从起始角轴半径,从起始角stanglestangle开始到开始到endangleendangle角结束,画一椭圆线。
40、当角结束,画一椭圆线。当stangle=0stangle=0,endangle=360endangle=360时,则画出的是一个完整的椭圆,时,则画出的是一个完整的椭圆,否则画出的将是椭圆弧。否则画出的将是椭圆弧。l画圆函数画圆函数lvoid far circle(int xvoid far circle(int x,int yint y,int int radius)radius);l该函数将以该函数将以( (x x,y)y)为圆心,为圆心,radiusradius为半径画个为半径画个圆。圆。l画圆弧函数画圆弧函数lvoid far arc(int xvoid far arc(int x,i
41、nt yint y,int stangleint stangle,int endangleint endangle,int radius)int radius);l该函数将以该函数将以( (x x,y)y)为圆心,为圆心,radiusradius为半径,从为半径,从stanglestangle为起始角开始,到为起始角开始,到endangleendangle为结束角为结束角画一圆弧。画一圆弧。l画扇形图函数画扇形图函数lvoid far pieslice(int xvoid far pieslice(int x,int yint y,int int stanglestangle,int enda
42、ngleint endangle,int radius)int radius);l该函数将以该函数将以( (x x,y)y)为圆心,为圆心,radiusradius为半为半径,从径,从stanglestangle为起始角,为起始角,endangleendangle为结为结束角,画一扇形图,扇形图的填充模式束角,画一扇形图,扇形图的填充模式和填充颜色可以事先设定,否则以缺省和填充颜色可以事先设定,否则以缺省模式进行。模式进行。lvoid far bar3d(int x1void far bar3d(int x1,int y1int y1,int int x2x2,int y2int y2,int
43、 depthint depth,int topflag)int topflag);l该函数参数名定义如图该函数参数名定义如图2.142.14所示。当所示。当topflagtopflag非非0 0时,画出三维顶,否则将不时,画出三维顶,否则将不画出三维顶,画出三维顶,depthdepth决定了三维直方图的决定了三维直方图的长度。长度。画三维立体直方图函数画三维立体直方图函数void far bar3d(int x1void far bar3d(int x1,int y1int y1,int x2int x2,int int y2y2,int depthint depth,int topflag)
44、int topflag); 画椭圆扇形函数画椭圆扇形函数 viod far sector(int xviod far sector(int x,int yint y,int int stanglestangle,int endang1eint endang1e,int xradiusint xradius,int int yradius)yradius);该函数将以该函数将以( (x x,y)y)为圆心,以为圆心,以xradiusxradius和和yradiusyradius为为x x轴和轴和y y轴半径,从起始角轴半径,从起始角stang1estang1e开始到开始到endang1eenda
45、ng1e角结束,画一椭圆扇形图,并按设置角结束,画一椭圆扇形图,并按设置的填充模式和颜色填充。当的填充模式和颜色填充。当stang1estang1e为为0 0,endangleendangle为为360360时,则画出一完整的椭圆图。时,则画出一完整的椭圆图。l 画椭圆图函数画椭圆图函数l void far fillellipse(int xvoid far fillellipse(int x,int yint y,int int xradiusxradius,int yradius)int yradius); ”l 该函数将以该函数将以( (x x,y)y)为圆心,以为圆心,以xradius
46、xradius和和yradiusyradius为为x x轴和轴和y y轴半径,画一椭圆图,并以设定或缺省模式轴半径,画一椭圆图,并以设定或缺省模式和颜色填充。和颜色填充。l 画多边形图函数画多边形图函数l void far fillpoly(int numpointsvoid far fillpoly(int numpoints,int far int far * *polypoints)polypoints)l 该函数将画出一个顶点数为该函数将画出一个顶点数为numpointsnumpoints,各顶点坐各顶点坐标 由标 由 p o l y p o i n t sp o l y p o i
47、n t s 给 出 的 多 边 形 , 也 即 边 数 为给 出 的 多 边 形 , 也 即 边 数 为polypoints-1polypoints-1,当为一封闭图形时,当为一封闭图形时,numpohtsnumpohts应为多应为多边形的顶点数加边形的顶点数加1 1,并且第一个顶点坐标应和最后一个,并且第一个顶点坐标应和最后一个顶点的坐标相同。顶点的坐标相同。l象素的显示颜色,或者说画线、填充面的颜色象素的显示颜色,或者说画线、填充面的颜色都可以用一些函数来设置,否则将采用缺省的都可以用一些函数来设置,否则将采用缺省的值。值。l显示点、线、面的颜色,称为前景色,而衬托显示点、线、面的颜色,称
48、为前景色,而衬托它们的背景,称为背景色。它们的背景,称为背景色。l按照按照CGACGA、EGAEGA、VGAVGA图形适配器的硬件结构,图形适配器的硬件结构,颜色可以通过对其内部相应的寄存器进行编程颜色可以通过对其内部相应的寄存器进行编程来改变,但不编程时,则取缺省值。来改变,但不编程时,则取缺省值。l颜色的设置,一般用所谓调色板来进行描述,颜色的设置,一般用所谓调色板来进行描述,它实际上对应一些硬件的寄存器。它实际上对应一些硬件的寄存器。l从C语言的角度看,调色板实际上就是一张颜色索引表,对CGA显示器,在中分辨显示方式下,有4种显示模式,每一种模式对应有一个调色板,可用调色板号区别。l模式
49、调色板号颜色值l 0 1 2 3lCGAC00背景色绿红黄lCGAC11背景色青洋红 白lCGAC22背景色淡绿 淡红 棕lCGAC33背景色淡青 淡洋红淡灰l前景颜色设置函数:前景颜色设置函数:l void far setcolor(int color)void far setcolor(int color);l 该函数将使得前景以所选该函数将使得前景以所选colorcolor颜色进行颜色进行显示,对显示,对CGACGA,当为中分辨模式时只能选当为中分辨模式时只能选0 0,1 1,2 2,3 3。l选择背景颜色的函数:选择背景颜色的函数:l void far setbkcolor(int c
50、olor)void far setbkcolor(int color)l该函数将使得背景色按所选该函数将使得背景色按所选1616种中的一种种中的一种colorcolor颜色进行显示。颜色进行显示。lTurbo CTurbo C也提供了改变线的宽度、类型的函数,也提供了改变线的宽度、类型的函数,其线的宽度当不设定时,取缺省值,即一个象其线的宽度当不设定时,取缺省值,即一个象素宽,当设定为素宽,当设定为3 3时,可取三个象素宽。当线时,可取三个象素宽。当线的形状不设定时,取缺省值,即实线。设定时,的形状不设定时,取缺省值,即实线。设定时,可有可有5 5种选择,它们可用设定线型函数来进行种选择,它们
51、可用设定线型函数来进行设置:设置:lvoid far setlinestyle(int linestylevoid far setlinestyle(int linestyle,unsigned upatternunsigned upattern,int thickness)int thickness);l其中其中 1 1inestyleinestyle为线型参数;为线型参数; thicknessthickness为线为线的宽度参数。的宽度参数。lvoid far setfilestyle(int pattern,int color);l该函数将用设定的color颜色和pattern图模式对后
52、面画出的轮廓图进行填充,这些图轮廓是由待定函数画出的。lcolor实际上就是调色板寄存器索引号,lpattern表示填充模式,lvoid far setfillpattern(char void far setfillpattern(char * *upattefnupattefn,int color)int color);l该函数设置用户自定义可填充模式,以该函数设置用户自定义可填充模式,以colorcolor指出的颜色对封闭图形进行填充。指出的颜色对封闭图形进行填充。lcolorcolor实际上就是调色板寄存器号,也可用颜实际上就是调色板寄存器号,也可用颜色名代替。色名代替。l参数参数up
53、atternupattern是一个指向是一个指向8 8个字节存储区的指个字节存储区的指针,这针,这8 8个字节表示了一个个字节表示了一个8 88 8象素点阵组成象素点阵组成的填充图模,它是由用户自定义的,它将用来的填充图模,它是由用户自定义的,它将用来对封闭图形填充。对封闭图形填充。lvoid far fillsettings(struct void far fillsettings(struct fillsettingstype far fillsettingstype far * *fillinfo);fillinfo);l它将得到当前的填充模式和颜色,这些它将得到当前的填充模式和颜色,这
54、些信息存在结构指针变量信息存在结构指针变量fillinfofillinfo指出的指出的结构中。结构中。l画条形图函数画条形图函数barbar和画扇形函数和画扇形函数pieslisepieslise,它它们需要用们需要用setfillstylesetfillstyle函数设置填充模式和颜函数设置填充模式和颜色,否则按缺省方式。色,否则按缺省方式。l其它:画三维立体直方图函数其它:画三维立体直方图函数lvoid far bar3d(int x1void far bar3d(int x1,int y1int y1,int x2int x2,int y2int y2,int depthint dept
55、h,int topflag)int topflag);l该函数参数名定义:该函数参数名定义:topflagtopflag非非0 0时,画出三维时,画出三维顶,否则将不画出三维顶,顶,否则将不画出三维顶,depthdepth决定了三维决定了三维直方图的长度。直方图的长度。l 画椭圆扇形函数画椭圆扇形函数l viod far sector(int xviod far sector(int x,int yint y,int int stanglestangle,int endang1eint endang1e,int xradiusint xradius,int int yradius)yradiu
56、s);l该函数将以该函数将以( (x x,y)y)为圆心,以为圆心,以xradiusxradius和和yradiusyradius为为x x轴和轴和y y轴半径,从起始角轴半径,从起始角stang1estang1e开开始到始到endang1eendang1e角结束,画一椭圆扇形图,并按角结束,画一椭圆扇形图,并按设置的填充模式和颜色填充。当设置的填充模式和颜色填充。当stang1estang1e为为0 0,endangleendangle为为360360时,则画出一完整的椭圆图。时,则画出一完整的椭圆图。l画椭圆图函数画椭圆图函数l void far fillellipse(int xvoid
57、 far fillellipse(int x,int yint y,int int xradiusxradius,int yradius)int yradius); ”l 该函数将以该函数将以( (x x,y)y)为圆心,以为圆心,以xradiusxradius和和yradiusyradius为为x x轴和轴和y y轴半径,画一椭圆图,并以设定或缺省模式轴半径,画一椭圆图,并以设定或缺省模式和颜色填充。和颜色填充。l 画多边形图函数画多边形图函数l void far fillpoly(int numpointsvoid far fillpoly(int numpoints,int far in
58、t far * *polypoints)polypoints)l 该函数将画出一个顶点数为该函数将画出一个顶点数为numpointsnumpoints,各顶点坐各顶点坐标 由标 由 p o l y p o i n t sp o l y p o i n t s 给 出 的 多 边 形 , 也 即 边 数 为给 出 的 多 边 形 , 也 即 边 数 为polypoints-1polypoints-1,当为一封闭图形时,当为一封闭图形时,numpohtsnumpohts应为多应为多边形的顶点数加边形的顶点数加1 1,并且第一个顶点坐标应和最后一个,并且第一个顶点坐标应和最后一个顶点的坐标相同。顶点
59、的坐标相同。lsetfillstylesetfillstyle函数,只能对由上述特定函数产函数,只能对由上述特定函数产生的图形进行颜色填充,生的图形进行颜色填充,l对任意封闭图形均可进行填充的是函数:对任意封闭图形均可进行填充的是函数:l void far floodfill(int xvoid far floodfill(int x,int yint y,int int border)border);l 该函数将对一封闭图形进行填充,其颜色该函数将对一封闭图形进行填充,其颜色和模式将由设定的或缺省的图模与颜色决定。和模式将由设定的或缺省的图模与颜色决定。其中参数其中参数( (x x,y)y)
60、为封闭图形中的任一点,为封闭图形中的任一点,borderborder是封闭图形的边框颜色。编程时该函数是封闭图形的边框颜色。编程时该函数位于画图形的函数之后,即要填充该图形。位于画图形的函数之后,即要填充该图形。l清屏函数清屏函数cleardevice()cleardevice()l存屏幕图象到内存区:存屏幕图象到内存区:lvoid far getimage(int x1void far getimage(int x1,int y1int y1,int x2int x2,int y2int y2,void void far far * *bitmap)bitmap);将把屏幕左上角为将把屏幕左上角为( (x1x1,y1)y1),右下角为右下角为( (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024学校实验室设备更新及维修服务合同3篇
- 2024店铺转让协议书
- 2024模具智能制造技术研发合同
- 2024标准版两居室房车短期租赁合同版
- 2024服装工装定制合同
- 2024青岛运动会官方用车租赁服务协议3篇
- 2024年行车设备安装与维护合同3篇
- 2024年版城市供水项目特许经营权协议
- 2024运营总监国际业务拓展与跨国合作合同3篇
- 2025年度网络安全技术股权合作与转让合同3篇
- 配件供应技术服务和质保期服务计划方案
- 中药房培训课题
- 供电方案审批流程
- 球墨铸铁管行业分析及市场研究报告
- 市政道路改造施工合理化建议
- 2024年广东省广州城投投资有限有限公司招聘笔试参考题库含答案解析
- 2024中国出口信用保险公司江苏分公司劳务派遣人员招聘笔试参考题库附带答案详解
- 自然情怀-主题作文训练
- 智能智能化智能眼镜
- 三年级下册数学混合计算100题及答案
- 社会工作专业见习教学大纲
评论
0/150
提交评论