版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1目录页C语言屏幕操作函数及应用第10章n 字符方式下的屏幕编程n 图形方式下的屏幕编程本章本章要点要点2目录页10.1 字符屏幕操作函数第10章 显示器有两种工作方式,文本方式和图形方式。显示器有两种工作方式,文本方式和图形方式。缺省显示为文本方式。在文本方式下,整个屏幕就缺省显示为文本方式。在文本方式下,整个屏幕就像稿纸一样被划分成一个个大小相等的单元,每单像稿纸一样被划分成一个个大小相等的单元,每单元只能显示一个字符。屏幕最常见的划分标准是元只能显示一个字符。屏幕最常见的划分标准是25行行*80列。在这种方式下,屏幕左上角坐标为列。在这种方式下,屏幕左上角坐标为(0,0),右下角坐标为右
2、下角坐标为(79, 24),显示器的坐标系如图,显示器的坐标系如图10-1所所示。示。Turbo C以函数方式提供对屏幕的操纵和控制,以函数方式提供对屏幕的操纵和控制,字符屏幕函数主要用于设定文本窗口的大小、颜色、字符屏幕函数主要用于设定文本窗口的大小、颜色、内容的清除和输入、输出等。内容的清除和输入、输出等。3目录页10.1 字符屏幕操作函数第10章 文本窗口在屏幕上是一个矩形区域,其大小和位置由其左上角和右下角的坐标决定。文本窗口在屏幕上是一个矩形区域,其大小和位置由其左上角和右下角的坐标决定。函数的定义格式为:函数的定义格式为: void window(int x1, int y1, i
3、nt x2, int y2); 参数参数(x1, y1)和和(x2, y2)分别为窗口的左上角和右下角的坐标,分别为窗口的左上角和右下角的坐标,x代表列坐标,代表列坐标,y代表行坐代表行坐标。例如,定义一个窗口,左上角坐标为标。例如,定义一个窗口,左上角坐标为(31, 4),右下角坐标为,右下角坐标为(60, 23)。函数的调用格式。函数的调用格式为:为:window(31, 4, 60, 23); 注:该函数原型在注:该函数原型在conio.h中定义。中定义。10.1.1 定义文本窗口定义文本窗口4目录页10.1 字符屏幕操作函数第10章文本窗口的颜色包括字符颜色和背景颜色,设置所用的函数是
4、:文本窗口的颜色包括字符颜色和背景颜色,设置所用的函数是:设置背景颜色:设置背景颜色:void textbackground(int color);设置字符颜色:设置字符颜色:void textcolor(int color); 表表10-1 窗口颜色列表窗口颜色列表10.1.2. 设置文本窗口颜色设置文本窗口颜色符号常数符号常数数值数值颜色颜色字符字符/ /背景背景符号常数符号常数数值数值颜色颜色字符字符/ /背景背景BLACK0黑均可LIGHTBLUE9淡蓝字符BLUE1蓝均可LIGHTGREEN10淡绿字符GREEN2绿均可LIGHTCYAN11淡青字符CYAN3青均可LIGHTRED1
5、2淡红字符RED4红均可LIGHTMAGENTA13淡洋红字符MAGENTA5洋红均可YELLOW14黄字符BROWN6棕均可WHITE15白字符LIGHTGRAY7淡灰均可BLINK128闪烁字符DARKGRAY8深灰字符5目录页10.1 字符屏幕操作函数第10章【例例10.1】利用蓝、绿、青、红、洋红、棕、淡灰为背景色,在屏幕上画出利用蓝、绿、青、红、洋红、棕、淡灰为背景色,在屏幕上画出7个大小为个大小为20列,列,10行的窗口,显示效果如图。行的窗口,显示效果如图。10.1.2. 设置文本窗口颜色设置文本窗口颜色图图10-2 文本状态下多窗口的运行效果文本状态下多窗口的运行效果6目录页1
6、0.1 字符屏幕操作函数第10章#includemain() int i; textbackground(0); /*设置背景颜色为黑色设置背景颜色为黑色*/ clrscr(); /*以黑色清除屏幕以黑色清除屏幕*/ for(i=1;i8;i+) window(21+i*5, 5+i, 40+i*5, 14+i); /*定义窗口定义窗口*/ textbackground(i); /*设置背景颜色为设置背景颜色为i对应的值对应的值*/ clrscr(); /*窗口背景变为窗口背景变为i对应的颜色对应的颜色*/ textcolor(15-i); /*在窗口中定义字符的颜色在窗口中定义字符的颜色*/
7、 cputs(Windows-); /*输出输出Windows-*/ putch(72-i); /*分别输出分别输出ABCDEFG*/ getch();10.1.2. 设置文本窗口颜色设置文本窗口颜色7目录页10.1 字符屏幕操作函数第10章 1窗口内文本的输出函数:窗口内文本的输出函数: (1)int cprintf(格式化字符串格式化字符串, ); 功能:按照功能:按照“格式化字符串格式化字符串”的格式输出的格式输出“变量表变量表”中对应的变量。中对应的变量。 (2)int cputs(char *string); 功能:在当前位置输出字符串功能:在当前位置输出字符串string。 (3)
8、int putch(int ch); 功能:在当前位置输出一个字符功能:在当前位置输出一个字符ch。10.1.3 窗口内的文本输入输出和其他屏幕操作函数窗口内的文本输入输出和其他屏幕操作函数8目录页10.1 字符屏幕操作函数第10章 2窗口内文本的输入函数及其他屏幕操作函数窗口内文本的输入函数及其他屏幕操作函数 (1)int getch(void); 功能:从键盘上输入一个字符。功能:从键盘上输入一个字符。 (2)void clrscr(); 功能:用背景色清除当前窗口中的内容,光标定位在窗口的左上角处。功能:用背景色清除当前窗口中的内容,光标定位在窗口的左上角处。 文本方式的优点是:占用的内
9、存空间少,程序设计相对简单。文本方式的优点是:占用的内存空间少,程序设计相对简单。10.1.3 窗口内的文本输入输出和其他屏幕操作函数窗口内的文本输入输出和其他屏幕操作函数9目录页10.2 Turbo C的图形与动画处理第10章 1像素与坐标像素与坐标 文本方式下可访问的最小单位是字符;图形方式下最小单位是像素文本方式下可访问的最小单位是字符;图形方式下最小单位是像素(又称为点阵又称为点阵)。对。对于显示器来说,它支持的像素个数越多,显示器的分辨率就越高,这样显示的图形就越细于显示器来说,它支持的像素个数越多,显示器的分辨率就越高,这样显示的图形就越细腻、清晰。常使用的显示器分辨率点阵大小为腻
10、、清晰。常使用的显示器分辨率点阵大小为640480(更高的分辨率(更高的分辨率Turbo C不支持)。不支持)。像素在屏幕上的位置由其所在的坐标像素在屏幕上的位置由其所在的坐标(x, y)决定。图形方式与文本方式显示器的坐标系相同决定。图形方式与文本方式显示器的坐标系相同(如图(如图10-1)。屏幕左上角为坐标原点)。屏幕左上角为坐标原点(0, 0),以,以x代表水平方向的坐标代表水平方向的坐标(从左到右从左到右),y代表代表垂直方向的坐标垂直方向的坐标(从上到下从上到下),X轴水平向右增加,轴水平向右增加,Y轴是垂直向下增加。例如,分辨率为轴是垂直向下增加。例如,分辨率为640*480的屏幕
11、,其坐标范围为的屏幕,其坐标范围为(0, 0)到到(639, 479)。在图形方式下,字符和图形都以像素方。在图形方式下,字符和图形都以像素方式显示。用户可以利用像素点绘制各种各样的图形。式显示。用户可以利用像素点绘制各种各样的图形。10.2.1 计算机的显示系统计算机的显示系统10目录页10.2 Turbo C的图形与动画处理第10章 2颜色颜色 我们把计算机屏幕同时可以显示的颜色组成一个颜色组,这就是一个调色板。比如我们把计算机屏幕同时可以显示的颜色组成一个颜色组,这就是一个调色板。比如VGA显示标准的调色板有显示标准的调色板有16种颜色,这种颜色,这16种颜色是从种颜色是从64种(种(E
12、GA)或)或256种(种(VGA)颜色中)颜色中选出来的。选出来的。 注意:在注意:在Turbo C图形方式下,屏幕的分辨率默认为图形方式下,屏幕的分辨率默认为640480,16种颜色可用。种颜色可用。10.2.1 计算机的显示系统计算机的显示系统11目录页10.2 Turbo C的图形与动画处理第10章 Turbo C提供的图形函数,按功能可分为图形系统控制函数、屏幕管理函数、基本绘图函数、提供的图形函数,按功能可分为图形系统控制函数、屏幕管理函数、基本绘图函数、填充图形函数、图形的保存与恢复函数、图形方式下的文本输出函数等几类。在使用这些函数填充图形函数、图形的保存与恢复函数、图形方式下的
13、文本输出函数等几类。在使用这些函数时,必须在程序的开头写上文件包含命令:时,必须在程序的开头写上文件包含命令:#include 1图形系统控制函数图形系统控制函数 计算机的显示系统一般(默认)情况下,工作在计算机的显示系统一般(默认)情况下,工作在80列列25行的文本方式。因此,在使用图行的文本方式。因此,在使用图形函数之前,必须把显示系统设置为图形工作方式。同样,在图形程序结束时,应使显示系统形函数之前,必须把显示系统设置为图形工作方式。同样,在图形程序结束时,应使显示系统恢复到原来的文本工作方式。恢复到原来的文本工作方式。10.2.2 Turbo C图形函数图形函数12目录页10.2 Tu
14、rbo C的图形与动画处理第10章 (1)图形模式初始化函数)图形模式初始化函数 格式:格式:initgraph(&gdriver, &gmode, path); 功能:从指定的路径功能:从指定的路径path中装入由中装入由driver指定的显示驱动程序,并采用由指定的显示驱动程序,并采用由mode指定的图形指定的图形方式初始化图形系统。方式初始化图形系统。 其中,参数其中,参数driver可取的值是可取的值是0到到10之间的整数或相应的符号名,用于指定所用适配器的驱之间的整数或相应的符号名,用于指定所用适配器的驱动程序。如表动程序。如表10-2:10.2.2 Turbo C图形函数图形函数符
15、号名符号名数值数值符号名符号名数值数值符号名符号名数值数值DETECT0CGA1MCGA2EGA3EGA644EGAMONO5IBM85146HERCMONO7ATT4008VGA9PC32701013目录页10.2 Turbo C的图形与动画处理第10章 (1)图形模式初始化函数)图形模式初始化函数 格式:格式:initgraph(&gdriver, &gmode, path); 功能:从指定的路径功能:从指定的路径path中装入由中装入由driver指定的显示驱动程序,并采用由指定的显示驱动程序,并采用由mode指定的图形指定的图形方式初始化图形系统。方式初始化图形系统。 其中,参数其中,
16、参数driver可取的值是可取的值是0到到10之间的整数或相应的符号名,用于指定所用适配器的驱之间的整数或相应的符号名,用于指定所用适配器的驱动程序。如表动程序。如表10-2:10.2.2 Turbo C图形函数图形函数符号名符号名数值数值符号名符号名数值数值符号名符号名数值数值DETECT0CGA1MCGA2EGA3EGA644EGAMONO5IBM85146HERCMONO7ATT4008VGA9PC32701014目录页10.2 Turbo C的图形与动画处理第10章10.2.2 Turbo C图形函数图形函数驱动程序显示模式值分辨率显示模式值分辨率EGAEGALO0640*200EGA
17、HI1640*350EGAMONOEGAMONOHI0640*350VGAVGALO0640*200VGAHI2640*480VGAMED1640*350IBM8514IBM8514LO0640*480IBM8514HI11024*76815目录页10.2 Turbo C的图形与动画处理第10章 参数参数path指明图形驱动程序所在的路径。当指明图形驱动程序所在的路径。当path字符串为空时,表示在当前目录下。字符串为空时,表示在当前目录下。从该函数的参数中可以知道,初始化图形系统有以下两种方式:从该函数的参数中可以知道,初始化图形系统有以下两种方式: 自动进行硬件测试并进行图形初始化的程序。
18、自动进行硬件测试并进行图形初始化的程序。 #include main() int gdriver=DETECT; /*自动检测硬件自动检测硬件*/ int gmode; /*模式模式gmode不必指定值不必指定值*/ initgraph(&gdriver, &gmode, ); /*图形初始化,图形初始化,path为空时,表示在当前目录下为空时,表示在当前目录下*/ 10.2.2 Turbo C图形函数图形函数16目录页10.2 Turbo C的图形与动画处理第10章 若已知图形适配器为若已知图形适配器为VGA时,想采用时,想采用640480的高分辨率模式的高分辨率模式VGAHI,则图形初始化
19、部分,则图形初始化部分 可写成:可写成: int gdriver=VGA; int gmode=VGAHI; initgraph(&gdriver, &mode, C:TC); “C:TC”表示图形驱动程序在表示图形驱动程序在C盘盘TC目录下,注意路径中的目录下,注意路径中的”必须写成必须写成”。10.2.2 Turbo C图形函数图形函数17目录页10.2 Turbo C的图形与动画处理第10章 (2)关闭图形方式函数)关闭图形方式函数closegraph() 格式:格式:closegraph(); 功能:释放图形系统所占的内存,关闭图形工作方式,并返回到文本方式下。功能:释放图形系统所占的
20、内存,关闭图形工作方式,并返回到文本方式下。 (3)恢复原工作方式函数:)恢复原工作方式函数: restorecrtmode( ); 功能:不关闭图形系统,回到原来所设置模式,同时清屏。该函数经常和设置图形工作模功能:不关闭图形系统,回到原来所设置模式,同时清屏。该函数经常和设置图形工作模式函数式函数setgraphmode交互使用,使显示器在图形和文本工作模式间切换。交互使用,使显示器在图形和文本工作模式间切换。10.2.2 Turbo C图形函数图形函数18目录页10.2 Turbo C的图形与动画处理第10章 2屏幕管理函数屏幕管理函数 此类函数用于设置绘图时使用的颜色和设置窗口(视区)
21、。此类函数用于设置绘图时使用的颜色和设置窗口(视区)。 (1)设置前景色函数)设置前景色函数setcolor() 格式:格式:setcolor(color); 功能:设置下次绘图时使用的颜色为功能:设置下次绘图时使用的颜色为color指定的颜色值(即设置画笔的颜色)。指定的颜色值(即设置画笔的颜色)。 参数参数color的取值范围为的取值范围为 015,color也可以是颜色值对应的符号常量。也可以是颜色值对应的符号常量。 调用此函数后,此颜色立即生效,并保持到下一次调用它改变颜色为止。表调用此函数后,此颜色立即生效,并保持到下一次调用它改变颜色为止。表10-4列出常用列出常用的的EGA/VG
22、A方式下可用的颜色值。方式下可用的颜色值。10.2.2 Turbo C图形函数图形函数19目录页10.2 Turbo C的图形与动画处理第10章10.2.2 Turbo C图形函数图形函数颜色值颜色值颜色颜色符号常量符号常量颜色值颜色值颜色颜色符号常量符号常量0 0黑黑BLACKBLACK8 8淡灰淡灰DARKGRAYDARKGRAY1 1蓝蓝BLUEBLUE9 9淡蓝淡蓝LIGHTBLUELIGHTBLUE2 2绿绿GREENGREEN1010淡绿淡绿LIGHTGREENLIGHTGREEN3 3青青CYANCYAN1111淡青淡青LIGHTCYANLIGHTCYAN4 4红红REDRED1
23、212淡红淡红LIGHTREDLIGHTRED5 5洋红洋红MAGENTAMAGENTA1313淡洋红淡洋红LIGHTMAGENTALIGHTMAGENTA6 6棕棕BROWNBROWN1414黄黄YELLOWYELLOW7 7淡灰淡灰LIGHTGRAYLIGHTGRAY1515白白WHITEWHITE20目录页10.2 Turbo C的图形与动画处理第10章 (2)设置背景色函数)设置背景色函数setbkcolor() 格式:格式:setbkcolor(color); 功能:用于设置后面绘图时的背景颜色。功能:用于设置后面绘图时的背景颜色。 参数参数color的含义和取值范围与上面的含义和取
24、值范围与上面setcolor()函数中的函数中的color相同。相同。 如果改变了调色板或图形方式,则表如果改变了调色板或图形方式,则表10-4中的色彩就可能不对应实际的颜色。中的色彩就可能不对应实际的颜色。 (3)清屏函数)清屏函数cleardevice() 格式:格式:cleardevice(); 功能:清除整个屏幕图形,并将当前光标点重新设置在原点(功能:清除整个屏幕图形,并将当前光标点重新设置在原点(0,0)处。)处。 说明:说明: 图形方式下虽然也存在一个当前光标位置,但却看不到。如果用户想知道当前点的实际位置,图形方式下虽然也存在一个当前光标位置,但却看不到。如果用户想知道当前点的
25、实际位置,可以使用函数可以使用函数getx()和和gety()得到当前点的两个坐标值。得到当前点的两个坐标值。10.2.2 Turbo C图形函数图形函数21目录页10.2 Turbo C的图形与动画处理第10章 (4)设置视图区函数)设置视图区函数setviewport() 格式:格式:setviewport(left, top, right, bottom, clip); 功能:在屏幕上开辟一个区域,建立一个视图区(类似于窗口,但它没有明确的可看到的功能:在屏幕上开辟一个区域,建立一个视图区(类似于窗口,但它没有明确的可看到的边界),用于绘图。边界),用于绘图。 参数都是整数,其中,参数都
26、是整数,其中,(left, top)为视图区左上角的坐标,为视图区左上角的坐标,(right, bottom)是视图区右下角的是视图区右下角的坐标,坐标,clip为裁剪状态参数。若为裁剪状态参数。若clip为为1,则表示在视图中进行的绘图操作,超过视图部分将自动,则表示在视图中进行的绘图操作,超过视图部分将自动被裁剪掉;如果是被裁剪掉;如果是0,则不裁剪。,则不裁剪。 调用此函数后,后面所有的输出坐标都是相对于该窗口(视图区)的,即窗口的左上角是调用此函数后,后面所有的输出坐标都是相对于该窗口(视图区)的,即窗口的左上角是坐标的原点(坐标的原点(0,0),与屏幕上的坐标无关。与屏幕上的坐标无关
27、。10.2.2 Turbo C图形函数图形函数22目录页10.2 Turbo C的图形与动画处理第10章 (4)设置视图区函数)设置视图区函数setviewport() 格式:格式:setviewport(left, top, right, bottom, clip); 功能:在屏幕上开辟一个区域,建立一个视图区(类似于窗口,但它没有明确的可看到的功能:在屏幕上开辟一个区域,建立一个视图区(类似于窗口,但它没有明确的可看到的边界),用于绘图。边界),用于绘图。 (5)清除视图区函数)清除视图区函数clearviewport() 格式:格式:clearviewport(); 功能:清除当前视图区
28、及其中的图形,并将当前点置于屏幕坐标原点(功能:清除当前视图区及其中的图形,并将当前点置于屏幕坐标原点(0,0)处。)处。10.2.2 Turbo C图形函数图形函数23目录页10.2 Turbo C的图形与动画处理第10章 3时间控制函数时间控制函数 此类函数用于控制绘图动作之间的间隔,一般用此类函数来实现动画效果。此类函数用于控制绘图动作之间的间隔,一般用此类函数来实现动画效果。 (1)系统暂停执行函数)系统暂停执行函数delay() 格式:格式:delay(time); 功能:系统暂停执行功能:系统暂停执行time指定的时间。指定的时间。 time 的单位为毫秒,最大值为的单位为毫秒,最
29、大值为65535,不能为负数。,不能为负数。 (2)系统挂起函数)系统挂起函数sleep() 格式:格式:sleep(time); 功能:系统挂起功能:系统挂起time指定的时间。指定的时间。 time的单位为秒,最大值的单位为秒,最大值65535,不能为负数。,不能为负数。10.2.2 Turbo C图形函数图形函数24目录页10.2 Turbo C的图形与动画处理第10章 本节介绍画点、画线以及填充等常用函数。用绘图函数画图时,使用当前的屏幕坐标(也本节介绍画点、画线以及填充等常用函数。用绘图函数画图时,使用当前的屏幕坐标(也可能是视图区的坐标)。在使用各种函数绘图前,一般要先设置好前景色
30、、背景色、画笔样式可能是视图区的坐标)。在使用各种函数绘图前,一般要先设置好前景色、背景色、画笔样式等参数。等参数。 1点类函数点类函数 (1)画点函数)画点函数putpixel() 格式:格式:putpixel(x, y, color); 功能:在指定坐标功能:在指定坐标(x, y)处以指定的颜色处以指定的颜色color画一个点。三个参数均是整数。画一个点。三个参数均是整数。 (2)取某点颜色函数)取某点颜色函数getpixel() 格式:格式:getpixel(x, y); 功能:以整数形式返回坐标功能:以整数形式返回坐标(x, y)处点的颜色值。处点的颜色值。10.2.3 基本绘图函数基
31、本绘图函数25目录页10.2 Turbo C的图形与动画处理第10章 (3)移动当前点函数)移动当前点函数moveto() 格式:格式:moveto(x,y); 功能:将当前点位置移动到功能:将当前点位置移动到(x, y)处。此函数只改变当前点位置,不画线。处。此函数只改变当前点位置,不画线。x为横坐标,为横坐标,y为为纵坐标。纵坐标。 两个参数均是整数,而且,它们的可选值范围是随着图形方式的变化而变化的。若想得到两个参数均是整数,而且,它们的可选值范围是随着图形方式的变化而变化的。若想得到当前图形方式下可用的最大坐标值,可分别使用当前图形方式下可用的最大坐标值,可分别使用getmaxx()和
32、和getmaxy()函数。函数。 (4)相对移动当前点函数)相对移动当前点函数moverel() 格式:格式:moverel(dx, dy); 功能:将当前点的位置相对移动功能:将当前点的位置相对移动(dx, dy)个点。此函数也是只移动点,不画线。两个参数分个点。此函数也是只移动点,不画线。两个参数分别是屏幕坐标别是屏幕坐标x方向和方向和y方向的增量,可正可负。方向的增量,可正可负。10.2.3 基本绘图函数基本绘图函数26目录页10.2 Turbo C的图形与动画处理第10章【例【例10.2】在屏幕上以蓝、绿两种颜色交替画点。】在屏幕上以蓝、绿两种颜色交替画点。#includemain()
33、 int gdriver=VGA; /*装入装入VGA驱动程序驱动程序*/ int gmode=VGAHI; /*置显示模式为置显示模式为VGAHI*/ int x; initgraph(&gdriver, &gmode, “”“”); /*初始化屏幕初始化屏幕*/ cleardevice(); /*清屏清屏*/ for(x=20;x=300;x+=16) putpixel(x, 20, 1); /*以蓝色画点以蓝色画点*/ putpixel(x+4, 20, 2); /*以绿色画点以绿色画点*/ getch(); closegraph(); /*关闭图形模式关闭图形模式*/10.2.3 基本
34、绘图函数基本绘图函数27目录页10.2 Turbo C的图形与动画处理第10章 2画线函数画线函数 (1)设置画线模式函数)设置画线模式函数setlinestyle() 格式:格式:setlinestyle(linestyle, upattern, thickness); 功能:设置画线函数的画线方式,画线方式在这里指画线时所用的线型和宽度。功能:设置画线函数的画线方式,画线方式在这里指画线时所用的线型和宽度。 其中参数其中参数linestyle指定所画线的类型,其值可取表指定所画线的类型,其值可取表10-5中的值:中的值: 表表10-5 linestyle可选值表可选值表10.2.3 基本绘
35、图函数基本绘图函数符号名数值含义符号名数值含义SOLID_LINE0实线DASHED_LINE3破折线DOTTED_LINE1点线UNERBIT_LINE4用户自定义线型CENTER_LINE2中心线28目录页10.2 Turbo C的图形与动画处理第10章 (2) 画从画从A点到点到B点的直线点的直线line()() 格式:格式:line(x0, y0, x1, y1); 功能:画一条从点功能:画一条从点(x0, y0)到点到点(x1, y1)的直线。函数的四个参数都必须是整型,其中的直线。函数的四个参数都必须是整型,其中x0和和x1的取值范围是的取值范围是0640,y0和和y1的取值范围是
36、的取值范围是0480。 (3)画从当前点到某点的直线)画从当前点到某点的直线lineto() 格式:格式:lineto(x, y); 功能:画一条从当前点到点功能:画一条从当前点到点(x, y)的直线。其中的直线。其中x、y的类型和取值同上。调用此函数后,当的类型和取值同上。调用此函数后,当前点将变为前点将变为(x, y)。10.2.3 基本绘图函数基本绘图函数29目录页10.2 Turbo C的图形与动画处理第10章 (4)画确定增量的直线)画确定增量的直线linerel(dx, dy) 格式:格式:linerel(int dx, int dy); 功能:画一条从当前点功能:画一条从当前点(
37、x, y)到按相对增量确定的点到按相对增量确定的点(x+dx, y+dy)的直线。的直线。 调用此函数后,当前点将变为调用此函数后,当前点将变为(x+ dx, y+ dy)。从表面看,此函数的功能与。从表面看,此函数的功能与lineto()函数相同,函数相同,但此函数多用于但此函数多用于dx和和dy不确定的情况下,而不确定的情况下,而lineto()函数一般用于函数一般用于x、y已经确定的情况。已经确定的情况。10.2.3 基本绘图函数基本绘图函数30目录页10.2 Turbo C的图形与动画处理第10章 3画简单图形(无填充)函数画简单图形(无填充)函数 (1)画矩形函数)画矩形函数rect
38、angle() 格式:格式:rectangle(x1, y1, x2, y2); 功能:以功能:以(x1, y1)为左上角,为左上角, (x2, y2)为右下角画一个矩形框。为右下角画一个矩形框。 (2)画多边形函数)画多边形函数drawpoly() 格式:格式:drawpoly(numpoints,polypoints); 功能:画一个顶点数为功能:画一个顶点数为numpoints, 各顶点坐标由各顶点坐标由polypoints 给出的多边形。第一个参数给出的多边形。第一个参数numpoints指出多边形的顶点数,第二个参数指出多边形的顶点数,第二个参数polypoints是一个整型数组,数
39、组中存储着是一个整型数组,数组中存储着numpoints个顶点的坐标值序列。个顶点的坐标值序列。10.2.3 基本绘图函数基本绘图函数31目录页10.2 Turbo C的图形与动画处理第10章 (3)画圆函数)画圆函数circle() 格式:格式:circle(x, y, radius); 功能:画一个以功能:画一个以(x, y)为圆心,半径为为圆心,半径为radius的圆。参数均为整数。的圆。参数均为整数。 (4)画弧函数)画弧函数arc() 格式:格式:arc(x, y, stangle, endangle, radius); 功能:本函数以功能:本函数以(x, y)为中心点,为中心点,r
40、adius为半径,从起始角为半径,从起始角stangle到终止角到终止角endangle之间以之间以当前前景颜色画一个圆弧。当前前景颜色画一个圆弧。 参数都是整数,参数都是整数,stangle和和endangle使用角度值表示。从使用角度值表示。从x轴方向逆时针旋转,依次经过轴方向逆时针旋转,依次经过90、180、270度。当旋转至度。当旋转至360度时,和度时,和x轴重合,当半径从轴重合,当半径从x轴方向开始顺时针旋转时,形成负角度。轴方向开始顺时针旋转时,形成负角度。10.2.3 基本绘图函数基本绘图函数32目录页10.2 Turbo C的图形与动画处理第10章 (5)画椭圆弧函数)画椭圆
41、弧函数ellipse() 格式:格式:ellipse(x, y, stangle, endangle, xradius, yradius); 功能:以功能:以(x, y)为中心,以为中心,以xradius为为x轴半径,轴半径,yradius为为y轴半径,从起始角轴半径,从起始角stangle到终止角到终止角endangle之间以当前前景色画一个椭圆弧。如果起始角是之间以当前前景色画一个椭圆弧。如果起始角是0,终止角是终止角是360,画出的是一个完整的椭画出的是一个完整的椭圆。角度的规定同上。圆。角度的规定同上。10.2.3 基本绘图函数基本绘图函数33目录页10.2 Turbo C的图形与动画
42、处理第10章 1设置填充模式和颜色函数设置填充模式和颜色函数setfillstyle() 格式:格式:void setfillstyle(int pattern, int color); 功能:设置填充模式功能:设置填充模式pattern和颜色和颜色color。Turbo C的图形系统中已经预定义了多种模式,如的图形系统中已经预定义了多种模式,如表表10-6所示。程序中既可以使用符号常量,也可以直接使用表中对应的数值。所示。程序中既可以使用符号常量,也可以直接使用表中对应的数值。10.2.4 填充类函数填充类函数符号名符号名数值数值含义含义符号名符号名数值数值含义含义EMPTY_FILLEMP
43、TY_FILL0 0用背景色填充用背景色填充SOLID_FILLSOLID_FILL1 1实填充实填充LINE_FILLLINE_FILL2 2用用-填充填充LTSLASH_FILLLTSLASH_FILL3 3用细用细/填充填充SLASH_FILLSLASH_FILL4 4用粗用粗/填充填充BKSLASH_FILLBKSLASH_FILL5 5用细用细填充填充LTBKSLASH_FILLLTBKSLASH_FILL6 6用粗用粗填充填充HATCH_FILLHATCH_FILL7 7用网线填充用网线填充XHATCH_FILLXHATCH_FILL8 8用交叉线填充用交叉线填充INTERLEAV
44、E_FILLINTERLEAVE_FILL9 9用间隔线填充用间隔线填充WIDE_DOT_FILLWIDE_DOT_FILL1010用宽间断点填充用宽间断点填充CLOSE_DOT_FILLCLOSE_DOT_FILL1111用密集点填充用密集点填充USER_FILLUSER_FILL1212用户自定义填充用户自定义填充34目录页10.2 Turbo C的图形与动画处理第10章 2填充任意特定封闭区域函数填充任意特定封闭区域函数floodfill() 格式:格式:floodfill(x, y, bcolor); 功能:填充一个封闭的区域。功能:填充一个封闭的区域。 参数参数(x, y)指被填充区
45、域中的一个点,指被填充区域中的一个点,bcolor指出填充区域的边界颜色。其中:指出填充区域的边界颜色。其中: (x, y)为封闭为封闭图形内的任意一点。图形内的任意一点。border为边界的颜色为边界的颜色, 也就是封闭图形轮廓的颜色。调用了该函数后也就是封闭图形轮廓的颜色。调用了该函数后, 将用将用函数函数setfillstyle规定的颜色和图模填满整个封闭图形。规定的颜色和图模填满整个封闭图形。 注意:注意: 如果如果x或或y取在边界上取在边界上, 则不进行填充。则不进行填充。 如果不是封闭图形则填充会从没有封闭的地方溢出去如果不是封闭图形则填充会从没有封闭的地方溢出去, 填满其它地方。
46、填满其它地方。 如果如果x或或y在图形外面在图形外面, 则填充封闭图形外的屏幕区域。则填充封闭图形外的屏幕区域。 由由border指定的颜色值必须与图形轮廓的颜色值相同。指定的颜色值必须与图形轮廓的颜色值相同。10.2.4 填充类函数填充类函数35目录页10.2 Turbo C的图形与动画处理第10章 3带填充画图函数带填充画图函数 本类函数不需要设置开始填充点,而是在绘制图形时直接使用由本类函数不需要设置开始填充点,而是在绘制图形时直接使用由setfillstyle()函数设置的模函数设置的模式和颜色进行填充。式和颜色进行填充。 (1)画直方图函数)画直方图函数bar() 格式:格式:bar
47、(x1,y1,x2,y2); 功能:确定一个以功能:确定一个以(x1, y1)为左上角为左上角, (x2, y2)为右下角的矩形窗口为右下角的矩形窗口, 再按规定模式和颜色填充。再按规定模式和颜色填充。此函数不画出边框此函数不画出边框, 即直方图的边框颜色与填充色相同。即直方图的边框颜色与填充色相同。 (2)画立方图函数)画立方图函数bar3d() 格式:格式:bar3d(x1, y1, x2, y2, depth, topflag); 功能:当功能:当topflag为非为非0时时, 画出一个三维的长方体。画出一个三维的长方体。10.2.4 填充类函数填充类函数36目录页10.2 Turbo
48、C的图形与动画处理第10章 (3)画并填充多边形函数)画并填充多边形函数fillpoly() 格式:格式:fillpoly(numpoints, polypoints); 功能:此函数使用当前线型和前景色画多边形,并使用当前的填充模式和填充颜色填充这功能:此函数使用当前线型和前景色画多边形,并使用当前的填充模式和填充颜色填充这个多边形。参数的取值与个多边形。参数的取值与drawpoly()完全相同。完全相同。 (4)画并填充椭圆函数)画并填充椭圆函数fillellipse() 格式:格式:fillellipse(x, y, xradius, yradius); 功能:以功能:以(x, y)为中
49、心,分别以为中心,分别以xradius和和yradius为横半轴和纵半轴,绘制并填充一个椭圆。为横半轴和纵半轴,绘制并填充一个椭圆。 使用当前的线型和前景色画边线,以当前的填充模式和填充颜色填充椭圆内部。使用当前的线型和前景色画边线,以当前的填充模式和填充颜色填充椭圆内部。10.2.4 填充类函数填充类函数37目录页10.2 Turbo C的图形与动画处理第10章 (5)画并填充扇形函数)画并填充扇形函数pieslice() 格式:格式:pieslice(x, y, stangle, endangle, radius); 功能:以功能:以(x, y)为中心,为中心,stangle和和endan
50、gle是起始角度和终止角度,是起始角度和终止角度,radius是扇形的半径。使是扇形的半径。使用当前的前景色和线型画出扇形的轮廓线,并以当前的填充模式和填充颜色填充其内部的区域。用当前的前景色和线型画出扇形的轮廓线,并以当前的填充模式和填充颜色填充其内部的区域。 (6)画并填充椭圆扇区函数)画并填充椭圆扇区函数sector() 格式:格式:sector(x, y, stangle, endangle, xradius, yradius); 功能:以功能:以(x, y)为中心,为中心,stangle和和endangle是起始角度和终止角度,是起始角度和终止角度,xradius和和yradius分
51、别为分别为横半轴半径和纵半轴半径。横半轴半径和纵半轴半径。10.2.4 填充类函数填充类函数38目录页10.2 Turbo C的图形与动画处理第10章 1.设置字体函数设置字体函数 格式:格式:settextstyle(font, direction, charsize); 功能:用于设置图形方式下输出文本时使用的字体名称、文本显示的方向和字符的大小功能:用于设置图形方式下输出文本时使用的字体名称、文本显示的方向和字符的大小(实际是放大倍数)。(实际是放大倍数)。 参数参数font指定选用的字体名称或代号,它的取值范围见表指定选用的字体名称或代号,它的取值范围见表10-7: 表表10-7 fo
52、nt可选值表可选值表10.2.5 图形方式下的文本输出图形方式下的文本输出符号名符号名数值数值含义含义符号名符号名数值数值含义含义DEFAULT_FONTDEFAULT_FONT0 08 8* *8 8点阵字体(默认)点阵字体(默认) TRIPLEX_FONTTRIPLEX_FONT1 1三倍笔划字体三倍笔划字体SMALL_FONTSMALL_FONT2 2小号笔划字体小号笔划字体SAN_SERIF_FONTSAN_SERIF_FONT3 3无衬线笔划字体无衬线笔划字体GOTHIC_FONTGOTHIC_FONT4 4黑体笔划字体黑体笔划字体39目录页10.2 Turbo C的图形与动画处理第
53、10章 2 .输出字符串函数输出字符串函数 Turbo C图形方式下输出字符串的函数有两个:图形方式下输出字符串的函数有两个: (1)在当前位置输出字符串函数在当前位置输出字符串函数outtext() 格式:格式:outtext(textstring); 功能:此函数在当前位置使用当前前景色输出字符串功能:此函数在当前位置使用当前前景色输出字符串textstring。输出格式采用。输出格式采用settextstyle()的设置或缺省值。的设置或缺省值。textstring为字符型指针为字符型指针, 指向文本在现行位置。指向文本在现行位置。 注意:在图形方式下,当前位置是不可见的。注意:在图形方
54、式下,当前位置是不可见的。10.2.5 图形方式下的文本输出图形方式下的文本输出40目录页10.2 Turbo C的图形与动画处理第10章 (2)在指定位置输出字符串函数在指定位置输出字符串函数outtextxy() 格式:格式:outtextxy(x, y, textstring); 功能:在功能:在(x, y)处使用当前前景色输出字符串处使用当前前景色输出字符串textstring。格式采用。格式采用settextstyle()的设置或缺省的设置或缺省值。值。textstring为字符型指针为字符型指针, 指向文本的现行位置。指向文本的现行位置。 说明说明: 这两个函数都是输出字符串这两个
55、函数都是输出字符串, 但经常会遇到输出数值或其它类型的数据但经常会遇到输出数值或其它类型的数据,此时就必须使用格式此时就必须使用格式化输出函数化输出函数sprintf()。 sprintf()函数的调用格式为:函数的调用格式为: sprintf(char *str, char *format, variable-list); 10.2.5 图形方式下的文本输出图形方式下的文本输出41目录页10.2 Turbo C的图形与动画处理第10章 所谓动画设计,就是将一个画面分解成不同时间出现的图像,快速地擦抹并显示在屏幕上,所谓动画设计,就是将一个画面分解成不同时间出现的图像,快速地擦抹并显示在屏幕上
56、,使人的视觉差异而产生动的感觉。动画设计被广泛运用于游戏设计、课件制作、实验模拟以及使人的视觉差异而产生动的感觉。动画设计被广泛运用于游戏设计、课件制作、实验模拟以及仿真科学等。仿真科学等。 注意:注意: 动画只是运用一些时间控制函数,利用人眼的视觉差异而已。实现动画要综合运用图形函动画只是运用一些时间控制函数,利用人眼的视觉差异而已。实现动画要综合运用图形函数的知识,并具有一定的想象力和数据描述能力,在例数的知识,并具有一定的想象力和数据描述能力,在例10.4、例、例10.5中,我们已经运用了动画设中,我们已经运用了动画设计技术思想,实现了画面动的感觉。计技术思想,实现了画面动的感觉。10.
57、2.6 动画设计技术动画设计技术42目录页10.2 Turbo C的图形与动画处理第10章 1存、取图形存、取图形 (1)求存储屏幕图像所需空间)求存储屏幕图像所需空间imagesize() 格式:格式:imagesize(x1,y1,x2,y2); 功能:求存储屏幕图像左上角功能:求存储屏幕图像左上角(x1,y1)到右下角到右下角(x2,y2)的方块所需字节数。的方块所需字节数。 (2)存储图像函数)存储图像函数getimage() 格式:格式:getimage(x1,y1,x2,y2,* buf); 功能:存储屏幕图像左上角功能:存储屏幕图像左上角(x1,y1)到右下角到右下角(x2,y2
58、)的方块到的方块到buf所指向的存储区域。所指向的存储区域。10.2.6 动画设计技术动画设计技术43目录页10.2 Turbo C的图形与动画处理第10章 (3)复制存储图像函数)复制存储图像函数outimage() 格式:格式:putimage(x,y,* buf,op) 功能:将用功能:将用getimage()存储在存储在buf所指向的内存中的图像复制到屏幕上,左上角位于所指向的内存中的图像复制到屏幕上,左上角位于(x,y)处。处。其中其中op为操作模式,含义如表为操作模式,含义如表10-10:10.2.6 动画设计技术动画设计技术符号名符号名数值数值含义含义符号名符号名数值数值含义含义
59、COPY_PUTCOPY_PUT0 0原样写到屏幕原样写到屏幕XOR_PUTXOR_PUT1 1与屏幕上的点异或后写与屏幕上的点异或后写OR_PUTOR_PUT2 2与屏幕上的点或后写与屏幕上的点或后写AND_PUTAND_PUT3 3与屏幕上的点与后写与屏幕上的点与后写NOT_PUTNOT_PUT4 4原图像变反后再写原图像变反后再写44目录页10.2 Turbo C的图形与动画处理第10章 2页操作页操作 存储在图像存储器存储在图像存储器VRAM中的一满屏图像信息称为一页,一般为中的一满屏图像信息称为一页,一般为64KB大小。大小。 Turbo C图形方式下最多可支持图形方式下最多可支持4
60、页,一般可支持两页。对活动页可以编辑图像,对可视页页,一般可支持两页。对活动页可以编辑图像,对可视页可以显示图像。相关函数如下:可以显示图像。相关函数如下: (1)setactivepage(n) 函数函数 功能:设置活动图形页。功能:设置活动图形页。 (2)setvisualpage(n) 函数函数 功能:设置当前显示图形页。功能:设置当前显示图形页。 函数中参数函数中参数n为页号,缺省值为为页号,缺省值为0页。调用页。调用setactivepage(),则程序后续图形输出被写到此页,则程序后续图形输出被写到此页,然后用然后用setvisualpage()改变显示页,从而产生动画效果。改变显
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 共享药箱活动策划方案(3篇)
- 舒肤佳活动促销策划方案(3篇)
- 梅州水贴施工方案(3篇)
- 2025年物流运输管理与服务操作手册
- 2025年大学大三(应急技术与管理)应急演练组织试题及答案
- 2025年中职(宠物医疗技术)宠物疾病诊疗试题及答案
- 2025年大学大一(机械电子工程)机械设计基础试题及答案
- 2025年中职(市场营销)产品推销技巧阶段测试试题及答案
- 2026年注册土木工程师(水工结构)(专业知识考试上)试题及答案
- 2025年大学大三(生态学)海洋生态学阶段测试题及答案
- 2026年及未来5年中国锻造件行业市场深度分析及发展前景预测报告
- 2025年荆楚理工学院马克思主义基本原理概论期末考试真题汇编
- 2026年恒丰银行广州分行社会招聘备考题库带答案详解
- 纹绣风险协议书
- 【语文】湖南省长沙市雨花区桂花树小学小学一年级上册期末试卷(含答案)
- 贵港市利恒投资集团有限公司关于公开招聘工作人员备考题库附答案
- 2026年及未来5年市场数据中国大型铸锻件行业市场深度分析及投资战略数据分析研究报告
- 冬季防静电安全注意事项
- 2025版煤矿安全规程题库
- 2025宁夏旅游投资集团有限公司招聘16人(第二批)笔试历年参考题库附带答案详解
- 村委会工作人员招聘面试常见问题及解答
评论
0/150
提交评论