语言图形编程基础.ppt
《语言图形编程基础.ppt》由会员分享,可在线阅读,更多相关《语言图形编程基础.ppt(40页珍藏版)》请在三一办公上搜索。
1、第7章 C语言的图形编程基础,7.1 图形处理基础 7.2 文本模式下的图形处理 7.3 图形模式下的图形处理,图形处理与显示适配器 计算机中的图形显示都是经过显示适配器(也称为显卡、图形适配器)的处理才能输出到显示器屏幕上,显示适配器在图形处理中有着重要的作用。由于显示适配器的不同,所支持的图形模式也不同,下面简单介绍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色。3VGAVGA(视频图形阵列适配器)是目前流行
3、的PC显示标准,它支持CGA、EGA的所有显示方式,同时还有640*480像素的高分辨率显示方式(VGAHI)、640*350像素的中分辨率显示方式(VGAMED)和640*200像素的低分辨率显示方式(VGALO),它们均有16种显示颜色可供选择。4MCGAMCGA的功能与CGA相似,它和CGA是部分兼容的,但有些功能又和VGA类似,有640*480像素的两色模式。5IBM8514IBM8514适配器具有较强的图形功能,最高分辨率可达1024*768像素,有256种颜色。,7.1 图形处理基础,文本模式 图7.1文本模式坐标系统 文本模式就是在文本字符形式下的显示方式,它的显示单位是字符,而
4、在图形模式下,显示的单位是像素。不论是采用文本模式还是图形模式,绘图时都需要对显示字符(或像素)的位置进行定位,这种定位通常是由坐标系统来决定的,由于是以文本模式进行显示,要控制字符的位置就可以用字符显示时的行、列为设置坐标的单位。在缺省方式下,TC规定屏幕坐标为每屏80列25行,屏幕的左上角为1行1列,右下角为25行80列,如图7.1所示。,7.1 图形处理基础,7.1 图形处理基础,图7.1文本模式坐标系统,图形模式 在图形处理模式下,显示的基本单位是像素。像素作为图形处理的基本单位,在屏幕上显示为一个点。屏幕上像素的数目就是通常所说的屏幕分辨率,它取决于显示器、显示适配器及屏幕模式。显示
5、图形时,可以通过屏幕坐标系统来决定构成图形的像素位置,在屏幕坐标系统中,以左上角为坐标原点(0,0),向右为x轴的正方向,向下为y轴的正方向,这一点有别于常用的数学坐标系。程序设计中所能使用的像素的数目,也就是屏幕可使用的单位取决于图形系统初始化时的图形模式。,7.1 图形处理基础,文本模式设置 在文本模式下处理图形,首先要做的就是设置文本模式,程序设计中,文本模式的设置可以通过函数textmode()来实现。textmode()函数的使用格式如下:textmode(int mode);参数mode(enum text_modes)是将要设置的文本模式。文本颜色的设置 在文本模式下输出时,如果
6、使用了彩色的文本模式,就可以设置文本颜色及背景颜色,这些设置可以由相应的函数来完成。1文本颜色 文本颜色设置函数textcolor()可用于设置显示文本的前景色,也就是字符的颜色,该函数使用格式如下:textcolor(int color);参数color(enum COLORS)为设置的颜色。,7.2 文本模式下的图形处理,2文本背景颜色文本颜色设置函数textbackground()可用于设置文本的背景色,该函数使用格式如下:textbackground(int color);参数color为设置的颜色,可使用的参数值为07的8种。3文本属性 文本颜色设置函数textattr()可用于设置
7、文本的属性,包括前景色,背景色,以及字符显示时是否闪烁,该函数使用格式如下:textattr(int attr);参数attr使用了一个字节来描述文本的属性,各位的含义如图7.2所示。,7.2 文本模式下的图形处理,其中低4位(03)用来设置字符显示的颜色(前景色),对应于颜色值015;第46位用于设置背景色;最高位用于设置显示出的字符是否闪烁。在设置属性值时可以通过位运算来控制颜色是设置到字节的具体位。,7.2 文本模式下的图形处理,图7.2文本属性字节的含义,其中低4位(03)用来设置字符显示的颜色(前景色),对应于颜色值015;第46位用于设置背景色;最高位用于设置显示出的字符是否闪烁。
8、在设置属性值时可以通过位运算来控制颜色是设置到字节的具体位。例如,下面的语句将设置蓝色背景下的黄色字符:textattr(YELLOW+(BLUE4);下面的语句将设置白色背景下的红色闪烁字符:textattr(RED+BLINK+(WHITE4);4文本亮度TC中提供了三处可以设置文本亮度的函数,分别如下:highvideo();/*设置文本为高亮显示*/lowvideo();/*设置文本为低亮显示*/normvideo();/*设置文本为正常亮度*/,7.2 文本模式下的图形处理,文本窗口与文本输出 文本窗口是文本模式下在屏幕上定义的一个矩形区域,当程序需要在屏幕上显示文本信息时,将只显示
9、在这个窗口中,而不能输出到窗口以外的区域。默认情况下,窗口就是整个屏幕。1文本窗口设置 可以调用window()函数进行窗口的设置,它可以将全屏幕窗口设置为程序所指定的、小于全屏幕的窗口。window()函数使用格式如下:window(int left,int top,int right,int bottom);参数left和right指定窗口第1列和最后1列在全屏幕窗口中的列数,top和bottom指定第1行和最后1行在全屏幕窗口中的行数。当定义了窗口后,前面所学的textcolor()、textbackground()和textattr()函数将只对窗口有效,窗口外区域不受影响。2文本的输
10、出 前面学习过的printf()、puts()和putchar()等函数都是以全屏幕为窗口进行输出,如果要以自定义的窗口为输出对象,则需要使用文本窗口下的输出函数,它们分别是:,7.2 文本模式下的图形处理,cprintf(char*format,);cputs(char*str);putch(int ch);这3个函数的功能相当于printf()、puts()和putchar(),不同的只是在于它们是以窗口而不是以全屏幕为输出对象。cprintf()按格式化字符串输出字符或数据,用法与printf()相同;cputs()输出字符串,用法与puts()相同;putch()输出单个字符,用法与p
11、utchar()相同。3屏幕清理 在图形绘制中很多情况下需要一个干净的窗口/屏幕,或者需要删除掉指定的部分内容,TC提供了文本模式下对屏幕进行清理的函数,分别如下:clrscr();clreol();delline();这3个函数都没有参数,clrscr()将整个窗口中的文本全部清除,将光标移到窗口左上角(1,1),如果在执行clrscr()函数前设置过文本颜色、背景颜色或文本属性,则清屏后这些设置将生效。clreol()函数将当前文本从光标位置开始到本行结束的所有字符都清除,但不改变光标位置。delline()函数将清除光标所在行的所有字符。,7.2 文本模式下的图形处理,文本图形的绘制1图
12、形字符 前面的学习中,文本中的字符只有常见的文字字符,算不上是文本图形,如果要绘制文本图形,就需要用到扩展ASCII码中的字符图形。2文本图形的移动 TC提供了一个可以移动文本图形的函数movetext(),它可以将指定矩形区域中的文本复制到一个新的位置。该函数格式如下:movetext(int x1,int y1,int x2,int y2,int x3,int y3);movetext()函数可以将左上角为(x1,y1),右下角为(x2,y2)的矩形区域复制到以(x3,y3)为左上角坐标的新位置,并且,原矩形区域内的图形不会改变。需要注意的是,movetext()函数中的坐标是以全屏幕为坐
13、标系统,而与窗口无关。3文本图形的存取 为了方便文本图形的存储,以供多次使用(例如,当某部分区域被掩盖后需要重新绘制时),TC为此提供了可以存取文本图形的函数gettext()。,7.2 文本模式下的图形处理,gettext()函数的格式如下:gettext(int x1,int y1,int x2,int y2,void*buffer);gettext()函数可以将左上角为(x1,y1),右下角为(x2,y2)的矩形区域内的文本图形存储到buffer指定的存储缓冲区,在存储时,矩形内的文本图形按字符从上向下、从左向右连续存储到缓冲区内。在调用该函数前应当先计算出所需的缓冲区大小,由于屏幕上一
14、个字符需要占用2个字节的存储空间1个字节存储ASCII码,另1个字节存储文本属性,因此计算缓冲区大小的公式如下:缓冲区字节=矩形行数*矩形列数*2矩形行数=y2y1+1矩形列数=x2x1+1读取文本图形函数puttext()格式如下:putttext(int x1,int y1,int x2,int y2,void*buffer);putttext()函数可以将buffer指定的存储缓冲区内的文本图形显示到左上角为(x1,y1),右下角为(x2,y2)的矩形区域中。,7.2 文本模式下的图形处理,例1:设计3个不同的窗口并在其中显示彩色的文本,例2:实现在文本图形方式下文本的移动,就像电影中的
15、字幕一样。,例3:在屏幕上输出一张红心5的纸牌图像。,#include stdio.h#include conio.hmain()char*str=彩色文本;clrscr();/*清屏*/window(5,1,20,4);/*设置窗口*/textcolor(YELLOW);/*设置文本颜色*/clrscr();cprintf(n%sn,str);/*输出文本*/window(25,1,40,4);textbackground(BLUE);/*设置背景色*/clrscr();cprintf(n%sn,str);window(45,1,60,4);textattr(BLACK+(WHITE4);/
16、*设置文本属性*/clrscr();cprintf(n%sn,str);getch();/*等待按键*/textattr(WHITE+(BLACK4);/*重新设置为黑底白字*/clrscr();,#include conio.hmain()char*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
17、(10000);/*设置延时*/gotoxy(i,2);/*设置光标位置*/delline();/*删除本行后面的文字*/cprintf(%s,str);/*输出文本*/getch();/*等待按键*/,#include stdio.h#include conio.hmain()int i;textmode(C80);clrscr();window(5,5,20,15);textcolor(BLACK);textbackground(WHITE);clrscr();/*下面程序段输出纸牌边框*/gotoxy(2,2);putch(0 xda);/*定位并输出纸牌左上角图形字符*/for(i=3
18、;i14;i+)/*循环输出上边框的横线*/gotoxy(i,2);/*定位光标*/putch(0 xc4);/*输出横线字符*/gotoxy(14,2);putch(0 xbf);/*定位并输出纸牌右上角图形字符*/for(i=3;i10;i+)/*利用循环输出纸牌左右边框*/gotoxy(2,i);putch(0 xb3);/*输出左边框*/gotoxy(14,i);putch(0 xb3);/*输出右边框*/,gotoxy(2,10);putch(0 xc0);/*定位并输出纸牌左下角图形字符*/for(i=3;i14;i+)/*循环输出下边框的横线*/gotoxy(i,14);/*定位
19、光标*/putch(0 xc4);/*输出横线字符*/gotoxy(14,10);putch(0 xd9);/*定位并输出纸牌右下角图形字符*/textcolor(RED);/*下面程序段输出纸牌上的文字5*/gotoxy(4,3);putch(5);/*输出左上角的文字*/gotoxy(12,9);putch(5);/*输出右下角的文字*/*下面程序段输出红心*/gotoxy(5,4);putch(0 x03);gotoxy(11,4);putch(0 x03);gotoxy(8,6);putch(0 x03);gotoxy(5,8);putch(0 x03);gotoxy(11,8);pu
20、tch(0 x03);/*按任意键继续*/getch();,图形系统的初始化 由于TC中默认的是文本界面,因此在进行图形模式前要先进行图形系统的初始化,并且在绘图结束后还需要将其关闭,还原到文本界面。1图形系统的检测 在对图形系统初始化前,需要先对图形系统进行检测,获取当前显示适配器的型号和分辨率模式。对图形系统的检测由函数detectgraph()来完成,该函数格式如下:detectgraph(int far*graphdriver,int far*graphmode);参数graphdriver为取得的图形适配器类型,graphmode为分辨率模式。当调用detectgraph()函数时,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图形 编程 基础
链接地址:https://www.31ppt.com/p-5841185.html