第7章C语言图形编程基础.ppt

上传人:本田雅阁 文档编号:3130774 上传时间:2019-07-14 格式:PPT 页数:40 大小:446.02KB
返回 下载 相关 举报
第7章C语言图形编程基础.ppt_第1页
第1页 / 共40页
第7章C语言图形编程基础.ppt_第2页
第2页 / 共40页
第7章C语言图形编程基础.ppt_第3页
第3页 / 共40页
第7章C语言图形编程基础.ppt_第4页
第4页 / 共40页
第7章C语言图形编程基础.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《第7章C语言图形编程基础.ppt》由会员分享,可在线阅读,更多相关《第7章C语言图形编程基础.ppt(40页珍藏版)》请在三一文库上搜索。

1、第7章 C语言的图形编程基础,7.1 图形处理基础 7.2 文本模式下的图形处理 7.3 图形模式下的图形处理,7.1.1 图形处理与显示适配器 计算机中的图形显示都是经过显示适配器(也称为显卡、图形适配器)的处理才能输出到显示器屏幕上,显示适配器在图形处理中有着重要的作用。由于显示适配器的不同,所支持的图形模式也不同,下面简单介绍TC 2.0所支持的显示适配器类型。 1CGA CGA(彩色图形适配器)是PC/XT等微机配用的显示适配器,它可以显示单色或彩色字符和图形。 在图形方式下,TC支持两种分辨率,一种为高分辨率方式(CGAHI),像素数为640*200像素,这时背景色是黑的(可以重新设

2、置),前景色可供选择,但前景色只能是一种,因此图形只显示两种色彩。 CGA的另一种为中分辨率显示方式,像素数为320*200像素,其背景色和前景色均可由用户选择,但仅能显示4种颜色。在该显示方式下,可有4种颜色模式供选择,即CGAC0、CGAC1、CGAC2和CGAC3,它们的区别是所显示的4种颜色有所不同。,7.1 图形处理基础,2EGA EGA(增强型图形适配器)除支持CGA的4种显示模式外,还增加了分辨率为640*200像素的16色显示方式,TC中称为EGALO(EGA低分辨率显示方式)和640*350像素的EGA高分辨显示方式(EGAHI),也可显示16色。 3VGA VGA(视频图形

3、阵列适配器)是目前流行的PC显示标准,它支持CGA、EGA的所有显示方式,同时还有640*480像素的高分辨率显示方式(VGAHI)、640*350像素的中分辨率显示方式(VGAMED)和640*200像素的低分辨率显示方式(VGALO),它们均有16种显示颜色可供选择。 4MCGA MCGA的功能与CGA相似,它和CGA是部分兼容的,但有些功能又和VGA类似,有640*480像素的两色模式。 5IBM8514 IBM8514适配器具有较强的图形功能,最高分辨率可达1024*768像素,有256种颜色。,7.1 图形处理基础,7.1.2 文本模式 图7.1 文本模式坐标系统 文本模式就是在文本

4、字符形式下的显示方式,它的显示单位是字符,而在图形模式下,显示的单位是像素。 不论是采用文本模式还是图形模式,绘图时都需要对显示字符(或像素)的位置进行定位,这种定位通常是由坐标系统来决定的,由于是以文本模式进行显示,要控制字符的位置就可以用字符显示时的行、列为设置坐标的单位。 在缺省方式下,TC规定屏幕坐标为每屏80列25行,屏幕的左上角为1行1列,右下角为25行80列,如图7.1所示。,7.1 图形处理基础,7.1 图形处理基础,图7.1 文本模式坐标系统,7.1.3 图形模式 在图形处理模式下,显示的基本单位是像素。像素作为图形处理的基本单位,在屏幕上显示为一个点。屏幕上像素的数目就是通

5、常所说的屏幕分辨率,它取决于显示器、显示适配器及屏幕模式。 显示图形时,可以通过屏幕坐标系统来决定构成图形的像素位置,在屏幕坐标系统中,以左上角为坐标原点(0,0),向右为x轴的正方向,向下为y轴的正方向,这一点有别于常用的数学坐标系。 程序设计中所能使用的像素的数目,也就是屏幕可使用的单位取决于图形系统初始化时的图形模式。,7.1 图形处理基础,7.2.1 文本模式设置 在文本模式下处理图形,首先要做的就是设置文本模式,程序设计中,文本模式的设置可以通过函数textmode()来实现。 textmode()函数的使用格式如下: textmode( int mode); 参数mode(enum

6、 text_modes)是将要设置的文本模式。 7.2.2 文本颜色的设置 在文本模式下输出时,如果使用了彩色的文本模式,就可以设置文本颜色及背景颜色,这些设置可以由相应的函数来完成。 1文本颜色 文本颜色设置函数textcolor()可用于设置显示文本的前景色,也就是字符的颜色,该函数使用格式如下: textcolor(int color); 参数color(enum COLORS)为设置的颜色。,7.2 文本模式下的图形处理,2文本背景颜色 文本颜色设置函数textbackground()可用于设置文本的背景色,该函数使用格式如下: textbackground(int color); 参

7、数color为设置的颜色,可使用的参数值为07的8种。 3文本属性 文本颜色设置函数textattr()可用于设置文本的属性,包括前景色,背景色,以及字符显示时是否闪烁,该函数使用格式如下: textattr(int attr); 参数attr使用了一个字节来描述文本的属性,各位的含义如图7.2所示。,7.2 文本模式下的图形处理,其中低4位(03)用来设置字符显示的颜色(前景色),对应于颜色值015;第46位用于设置背景色;最高位用于设置显示出的字符是否闪烁。 在设置属性值时可以通过位运算来控制颜色是设置到字节的具体位。,7.2 文本模式下的图形处理,图7.2 文本属性字节的含义,其中低4位

8、(03)用来设置字符显示的颜色(前景色),对应于颜色值015;第46位用于设置背景色;最高位用于设置显示出的字符是否闪烁。 在设置属性值时可以通过位运算来控制颜色是设置到字节的具体位。例如,下面的语句将设置蓝色背景下的黄色字符: textattr(YELLOW+(BLUE4); 下面的语句将设置白色背景下的红色闪烁字符: textattr(RED+BLINK+(WHITE4); 4文本亮度 TC中提供了三处可以设置文本亮度的函数,分别如下: highvideo(); /* 设置文本为高亮显示 */ lowvideo(); /* 设置文本为低亮显示 */ normvideo(); /* 设置文本

9、为正常亮度 */,7.2 文本模式下的图形处理,7.2.3 文本窗口与文本输出 文本窗口是文本模式下在屏幕上定义的一个矩形区域,当程序需要在屏幕上显示文本信息时,将只显示在这个窗口中,而不能输出到窗口以外的区域。默认情况下,窗口就是整个屏幕。 1文本窗口设置 可以调用window()函数进行窗口的设置,它可以将全屏幕窗口设置为程序所指定的、小于全屏幕的窗口。window()函数使用格式如下: window(int left,int top,int right,int bottom); 参数left和right指定窗口第1列和最后1列在全屏幕窗口中的列数,top和bottom指定第1行和最后1行

10、在全屏幕窗口中的行数。 当定义了窗口后,前面所学的textcolor()、textbackground()和textattr()函数将只对窗口有效,窗口外区域不受影响。 2文本的输出 前面学习过的printf()、puts()和putchar()等函数都是以全屏幕为窗口进行输出,如果要以自定义的窗口为输出对象,则需要使用文本窗口下的输出函数,它们分别是:,7.2 文本模式下的图形处理,cprintf(char * format , ); cputs(char * str); putch(int ch); 这3个函数的功能相当于printf()、puts()和putchar(),不同的只是在于它

11、们是以窗口而不是以全屏幕为输出对象。cprintf()按格式化字符串输出字符或数据,用法与printf()相同;cputs()输出字符串,用法与puts()相同;putch()输出单个字符,用法与putchar()相同。 3屏幕清理 在图形绘制中很多情况下需要一个干净的窗口/屏幕,或者需要删除掉指定的部分内容,TC提供了文本模式下对屏幕进行清理的函数,分别如下: clrscr(); clreol(); delline(); 这3个函数都没有参数,clrscr()将整个窗口中的文本全部清除,将光标移到窗口左上角(1,1),如果在执行clrscr()函数前设置过文本颜色、背景颜色或文本属性,则清屏

12、后这些设置将生效。clreol()函数将当前文本从光标位置开始到本行结束的所有字符都清除,但不改变光标位置。delline()函数将清除光标所在行的所有字符。,7.2 文本模式下的图形处理,7.2.4 文本图形的绘制 1图形字符 前面的学习中,文本中的字符只有常见的文字字符,算不上是文本图形,如果要绘制文本图形,就需要用到扩展ASCII码中的字符图形。 2文本图形的移动 TC提供了一个可以移动文本图形的函数movetext(),它可以将指定矩形区域中的文本复制到一个新的位置。该函数格式如下: movetext(int x1,int y1,int x2,int y2,int x3,int y3)

13、; movetext()函数可以将左上角为(x1,y1),右下角为(x2,y2)的矩形区域复制到以(x3,y3)为左上角坐标的新位置,并且,原矩形区域内的图形不会改变。 需要注意的是,movetext()函数中的坐标是以全屏幕为坐标系统,而与窗口无关。 3文本图形的存取 为了方便文本图形的存储,以供多次使用(例如,当某部分区域被掩盖后需要重新绘制时),TC为此提供了可以存取文本图形的函数gettext()。,7.2 文本模式下的图形处理,gettext()函数的格式如下: gettext(int x1,int y1,int x2,int y2,void *buffer); gettext()函

14、数可以将左上角为(x1,y1),右下角为(x2,y2)的矩形区域内的文本图形存储到buffer指定的存储缓冲区,在存储时,矩形内的文本图形按字符从上向下、从左向右连续存储到缓冲区内。 在调用该函数前应当先计算出所需的缓冲区大小,由于屏幕上一个字符需要占用2个字节的存储空间1个字节存储ASCII码,另1个字节存储文本属性,因此计算缓冲区大小的公式如下: 缓冲区字节=矩形行数*矩形列数*2 矩形行数=y2y1+1 矩形列数=x2x1+1 读取文本图形函数puttext()格式如下: putttext(int x1,int y1,int x2,int y2,void *buffer); puttte

15、xt()函数可以将buffer指定的存储缓冲区内的文本图形显示到左上角为(x1,y1),右下角为(x2,y2)的矩形区域中。,7.2 文本模式下的图形处理,例1:设计3个不同的窗口并在其中显示彩色的文本,例2:实现在文本图形方式下文本的移动,就像电影中的字幕一样。,例3:在屏幕上输出一张红心5的纸牌图像。,#include “stdio.h“ #include “conio.h“ main() char * str=“彩色文本“; clrscr(); /*清屏*/ window(5,1,20,4); /*设置窗口*/ textcolor(YELLOW); /*设置文本颜色*/ clrscr()

16、; cprintf(“n%sn“,str); /*输出文本*/ window(25,1,40,4); textbackground(BLUE); /*设置背景色*/ clrscr(); cprintf(“n%sn“,str); window(45,1,60,4); textattr(BLACK+(WHITE4); /*设置文本属性*/ clrscr(); cprintf(“n%sn“,str); getch(); /*等待按键*/ textattr(WHITE+(BLACK4); /*重新设置为黑底白字*/ clrscr(); ,#include “conio.h“ main() char *

17、 str=“Turbo C 2.0“; int i; textmode(C80); /*设置文本模式*/ window(1,1,80,4); /*设置窗口*/ textcolor(YELLOW); /*设置文本颜色*/ textbackground(BLUE); /*设置背景色*/ clrscr(); for(i=70;i1;i-) /*循环输出文字产生移动效果*/ delay(10000); /*设置延时*/ gotoxy(i,2); /*设置光标位置*/ delline(); /*删除本行后面的文字*/ cprintf(“%s“,str);/*输出文本*/ getch(); /*等待按键*

18、/ ,#include “stdio.h“ #include “conio.h“ main() int i; textmode(C80); clrscr(); window(5,5,20,15); textcolor(BLACK); textbackground(WHITE); clrscr(); /*下面程序段输出纸牌边框*/ gotoxy(2,2); putch(0xda); /*定位并输出纸牌左上角图形字符*/ for(i=3;i14;i+) /*循环输出上边框的横线*/ gotoxy(i,2);/*定位光标*/ putch(0xc4);/*输出横线字符*/ gotoxy(14,2);

19、putch(0xbf); /*定位并输出纸牌右上角图形字符*/ for(i=3;i10;i+)/*利用循环输出纸牌左右边框*/ gotoxy(2,i); putch(0xb3);/*输出左边框*/ gotoxy(14,i); putch(0xb3);/*输出右边框*/ ,gotoxy(2,10); putch(0xc0); /*定位并输出纸牌左下角图形字符*/ for(i=3;i14;i+)/*循环输出下边框的横线*/ gotoxy(i,14); /*定位光标*/ putch(0xc4); /*输出横线字符*/ gotoxy(14,10); putch(0xd9); /*定位并输出纸牌右下角图

20、形字符*/ textcolor(RED); /*下面程序段输出纸牌上的文字“5“*/ gotoxy(4,3); putch(5);/*输出左上角的文字*/ gotoxy(12,9); putch(5);/*输出右下角的文字*/ /*下面程序段输出红心*/ gotoxy(5,4); putch(0x03); gotoxy(11,4); putch(0x03); gotoxy(8,6); putch(0x03); gotoxy(5,8); putch(0x03); gotoxy(11,8); putch(0x03); /*按任意键继续*/ getch(); ,7.3.1 图形系统的初始化 由于TC

21、中默认的是文本界面,因此在进行图形模式前要先进行图形系统的初始化,并且在绘图结束后还需要将其关闭,还原到文本界面。 1图形系统的检测 在对图形系统初始化前,需要先对图形系统进行检测,获取当前显示适配器的型号和分辨率模式。 对图形系统的检测由函数detectgraph()来完成,该函数格式如下: detectgraph(int far *graphdriver,int far *graphmode); 参数graphdriver为取得的图形适配器类型,graphmode为分辨率模式。 当调用detectgraph()函数时,函数将检测到的图形适配器类型赋给graphdriver,将检测到的该类型

22、适配器所支持的最高分辨率模式赋给graphmode。 TC 中支持的图形适配器和图形模式很多(enum graphics_modes和graphics_drivers)。如果检测到的适配器不是已有适配器和模式,则返回2表示不支持该适配器。,7.3 图形模式下的图形处理,关于各种指针的使用,请参考相关专业书籍,一般介绍的程序均为near型指针,由于是小程序,因此可省略指针修饰。因此上述函数在使用时可省略如下: detectgraph( 参数graphdriver为调用的图形驱动,graphmode为图形模式,pathtodriver为图形驱动程序的存储路径,该参数可省略(用“表示),此时在系统当

23、前目录下查找驱动。 参数graphdriver可以是任一种图形驱动器名,也可以是对应的数值。 参数graphmode可以是图形驱动器对应的图形模式之一,可以使用符号常量,也可以使用数值。,7.3 图形模式下的图形处理,3清除屏幕 在图形绘制前,通常都需要将屏幕进行清理,以便绘图,这就要用到图形模式下的清屏函数cleardevice(),该函数格式如下: cleardevice(); cleardevice()函数没有参数,它的用途是清除整个屏幕上的内容。 4关闭图形系统 当退出图形系统时,需要使用closegraph()函数关闭当前图形系统,使系统回到文本模式状态,该项函数格式如下: clos

24、egraph(); closegraph()函数没有参数,执行时将关闭图形系统,并将图形系统驱动程序从内存中清除。 7.3.2 基本图形绘制 1画笔坐标定位 在图形绘制中,通常将绘图的工具称为画笔,TC中也沿用了这一名称。在绘图时,屏幕就相当于是绘图纸,在绘图时,需要将画笔落在纸上,这就是画图开始的位置;在绘图过程中还经常要将画笔抬起,移到另一个位置再画。所有这些操作,都需要对画笔的坐标进行控制,为此,TC中提供了完成这些功能的函数,,7.3 图形模式下的图形处理,2绘图颜色的设置 为了能给制丰富多彩的图形,TC提供了颜色设置函数,分别如下: setcolor(int color); setb

25、kcolor(int color); setcolor()函数用于设置前景色,即画笔颜色,setbkcolor()函数用于设置背景色。参数color(enum COLORS) 3点与直线的绘制 点的绘制由putpixel()函数完成,该函数格式如下: putpixel(int x,int y,int color); putpixel()函数将在点(x,y)用color指定的颜色绘制一个点。 如果想要取得某一点的颜色,可使用函数getpixel()来完成,该函数格式如下: int getpixel(int x,int y); getpixel()函数将获取并返回点(x,y)的颜色值。 绘制直线的

26、函数有多个,分别如下:,7.3 图形模式下的图形处理,line(int x0,int y0,int x1,int y1); lineto(int x,int y); linerel(int dx,int dy); 函数line()用于从点(x0,y0)到点(x1,y1)绘制一条直线。 函数lineto()用于从当前位置开始绘制一条到点(x,y)的直线。 函数linerel()用于绘制一条与当前位置相对的点(x+dx,y+dy)的直线。 直线绘制时,由于没有设置颜色的参数,将使用最近一次设置的前景颜色。 4矩形与实心矩形的绘制 矩形函数rectangle()可用于绘制矩形框,使用格式如下: re

27、ctangle(int x1,int y1,int x2,int y2); rectangle()函数将在以(x1,y1)为左上角,(x2,y2)为右下角的矩形区域内绘制一个空心的矩形框。 函数bar()可用于绘制实心矩形,使用格式如下: bar(int x1,int y1,int x2,int y2); bar()函数将在以(x1,y1)为左上角,(x2,y2)为右下角的矩形区域内绘制一个实心的矩形,矩形内部的填充模式和颜色可以使用相关函数进行设计,如果没有设置,则使用缺省模式。,7.3 图形模式下的图形处理,5圆、椭圆与圆弧的绘制 绘制圆形的函数是circle(),使用格式如下: circ

28、le(int x,int y,int radius); circle()函数将绘制一个以(x,y)为圆心,以radius为半径的圆形。 绘制椭圆的函数是ellipse(),使用格式如下: ellipse(int x,int stangle, int endangle, int xradius,int yradius); 该函数将以(x,y)为中心,以xradius 和yradius为x轴和y轴半径,从起始角stangle到endangle角结束,画椭圆弧线。 当设置stangle为0,endangle为360时,则绘制的是一个完整椭圆,否则绘出的将是椭圆弧,如图7.3所示。 图7.3中,角度设

29、置时以x轴的正方向为0,度数以逆时针方向递增,当为360时正好是一个完整的椭圆。,7.3 图形模式下的图形处理,7.3 图形模式下的图形处理,图7.3 椭圆的绘制,6线型设置 在前面所绘的图形中,图形线条都是1个像素宽的实线,其实,在程序中还可以设置线条的宽窄和线型,这些可以由函数setlinestyle()来设置,该函数使用格式如下: setlinestyle(int linestyle,unsigned upattern,int thickness); 其中,参数linestyle(enum line_styles)用于设置线型。 7.3.3 封闭图形 在前面的学习中,除bar()外,绘制

30、的图形都只是线条或空心轮廓(如圆、弧线等),有时在程序中需要绘制出填充了色彩或图案样式的封闭图形,这样的图形可以通过两种方法进行绘制:使用TC提供的绘制封闭图形的函数;或者绘制出图形轮廓后通过填充函数进行色彩的填充。 1绘制封闭图形 TC提供了绘制封闭图形的函数,可以用于绘制填充了色彩(或图案样式)的扇形、椭圆和三维立体直方图等封闭图形。,7.3 图形模式下的图形处理,绘制扇形的函数是pieslice(),使用格式如下: pieslice(int x,int y,int stangle,int endagnle,int radius); 该函数将以(x,y)为中心,以radius为半径,从起始

31、角stangle到endangle角结束,绘制圆扇形。图形内部的填充模式和颜色可以使用相关函数进行设置,如果没有设置,则使用缺省模式。 绘制封闭椭圆的函数是fillellipse(),使用格式如下: fillellipse(int x,int y,int xradius,int yradius); 该函数将以(x,y)为中心,以xradius和yradius为x轴和y轴半径,绘制封闭的椭圆。图形内部的填充模式和颜色可以使用相关函数进行设置,如果没有设置,则使用缺省模式。 绘制椭圆扇形的函数为sector(),使用格式如下: sector(int x,int y,int stangle,int

32、endangle,int xradius,int yradius); 该函数将以(x,y)为中心,以xradius 和yradius为x轴和y轴半径,从起始角stangle到endangle角结束,绘制椭圆扇形。,7.3 图形模式下的图形处理,绘制三维立体直方图的函数是bar3d(),格式如下: bar3d(int x1,int y1,int x2,int y2,int depth,int topflag); 函数中各参数的含义参见下图。当topflag为0时绘制出三维立柱的顶部,否则将不绘制出顶部。 绘制多边形的函数为fillpoly(),使用格式如下: fillpoly(int numpo

33、ints,int far *polypoints); 该函数将绘制一顶点数为numpoints,各顶点坐标由polypoints给出的多边形。所绘出的多边形的边数为numpoints1,如果是绘制封闭图形,则第一个顶点和最后一个顶点的坐标相同。,7.3 图形模式下的图形处理,7.3 图形模式下的图形处理,图7.4 三维立体直方图,2封闭图形的填充样式 在缺省情况下,绘制出的封闭图形都是使用单白色实填充,如果需要设置填充色和填充样式,可以通过函数setfillstyle()实现,该函数使用格式如下: setfillstyle(int pattern,int color); setfillstyl

34、e()函数用于设置填充样式和颜色,参数color为填充色,pattern(enum fill_patterns)为填充样式。 3任意封闭图形的填充 前面学习过的填充,都只是对于特定函数产生的图形,如果需要对任意的封闭图形进行填充,则可以使用函数floodfill()来完成,格式如下: floodfill(int x,int y,int border); 该函数将对点(x,y)所在的、以border为封闭边界颜色的区域进行填充。其中,(x,y)可以是封闭区域中的任意一点,但不能在边界上;如果(x,y)所在区域不是封闭区域,则填充将溢出到所有相连的区域;border必须是封闭区域的轮廓颜色,否则可

35、能出错。,7.3 图形模式下的图形处理,例4:在屏幕上绘制出扇形、三维直方体图和六边形等各种封闭图形。,#include “graphics.h“ main() int driver=DETECT; int mode; int p=390,70,440,10,520,10,570,70,520,130,440,130,390,70; /*设置多边形顶点*/ initgraph( ,7.3.4 屏幕操作 为了方便对屏幕图像的操作,如重绘、移动等,TC提供了一系列的屏幕操作函数。 1屏幕图像的存储与显示 将屏幕图像存储到内存的函数是getimage(),格式如下: getimage(int x1,

36、int y1,int x2,int y2,void far *bitmap); 该函数将屏幕上以(x1,y1)为左上角,以(x2,y2)为右下角的矩形区域内的图像存储到指针bitmap所指定的内存中。 其中,bitmap所指为存储图像的内存缓冲区,该缓冲区的大小可由函数imagesize()取得,该函数格式如下: int imagesize(int x1,int y1,int x2,int y2); 该函数执行时返回屏幕上以(x1,y1)为左上角,以(x2,y2)为右下角的矩形区域图像存储所需要的字节数。 函数putimage()可将存储在内存中的图像显示到屏幕上,格式如下: putimage

37、(int x1,int y1,void far *bitmap,int op); 该函数将指针bitmap所指内存空间所存储的图像按op(enum putimage_ops)所指定的操作显示到以(x1,y1)为左上角的区域。,7.3 图形模式下的图形处理,2图形窗口 与文本窗口相似,在图形方式下也可以将屏幕上任意矩形区域设置为一个窗口,以后的操作都在这个窗口中进行。 在定义了图形窗口后,图形操作的坐标都是以窗口左上角为(0,0)点,而不是以屏幕左上角为(0,0)点。 定义图形窗口的函数setriewport()如下: setviewport(int x1,int y1,int x2,int y

38、2,int clipflag); 该函数将屏幕上以(x1,y1)为左上角,以(x2,y2)为右下角的矩形区域定义为一个窗口,参数clipflag指定当所绘图形超出窗口边界时的处理方式:如果值为1,则超出部分将被减去,不能显示出来;如果值为0,则超出部分仍将绘制出来。 函数clearviewport()可用于清除图形窗口的内容,格式如下: clearviewport();,7.3 图形模式下的图形处理,函数getviewsettings()用于获取当前窗口信息,格式如下: getviewsettings(struct viewporttype fat * viewport); 该函数将取得的窗口

39、信息存储到结构 viewporttype中,该结构定义如下: struct viewporttype int left, top, right, bottom; /* 窗口的左、上、右、下对应的坐标数据 */ int clip; /* 窗口超出部分的处理方式 */ ; 利用窗口和屏幕图像的存取,可以很方便地实现图形动画,例如,可以在不同的窗口中绘制出同样的图形,再按一定的时间间隔在不同的位置绘制出该窗口;或者将存储的图像在不同的位置按一定的时间间隔进行复制。,7.3 图形模式下的图形处理,例5:综合实例:文本窗口与菜单,例6:综合实例:花瓣图案,#include “conio.h“ void

40、box(int x,int y,int width,int high); main() int i; char *menu=“File“,“Edit“,“Run“ ,“Compile“,“Window“; /*定义水平菜单字符串*/ textmode(C80); textattr(WHITE+(BLACK4); clrscr(); window(1,1,60,25); /*定义程序窗口*/ textattr(RED+(LIGHTGRAY4); clrscr(); for(i=0;i5;i+) /*输出水平菜单字符*/ gotoxy(5+i*10,1); cprintf(“%s“,menui);

41、 window(2,2,58,25); /*定义编辑窗口*/ textattr(WHITE+(BLUE4); clrscr(); box(1,1,57,22); /*调用box()绘制编辑窗口边框*/ window(1,25,60,25); /*定义底部信息窗口*/ textattr(BLACK+(LIGHTGRAY4); clrscr(); gotoxy(5,1); cprintf(“F1-Help F5-Zoom F6-Switch F7-Trace“); /*输出信息窗口字符*/ getch();,/*box()函数用于输出一个矩形字符边框*/ void box(int x,int y,

42、int width,int high) int i; gotoxy(x,y); putch(0xda); for(i=x+1;iwidth;i+) putch(0xc4); putch(0xbf); for(i=y+1;ihigh;i+) gotoxy(x,i); putch(0xb3); gotoxy(width,i); putch(0xb3); gotoxy(x,high); putch(0xc0); for(i=x+1;iwidth;i+) putch(0xc4); putch(0xd9); return; ,#define PI 3.1415926 #include “math.h“ #include “graphics.h“ main() int graphdriver=DETECT; int graphmode; float i,j,x1,x2,y1,y2; detectgraph(,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1