【教学课件】第3章高级编程技术的实现.ppt

上传人:wuy****n92 文档编号:80436602 上传时间:2023-03-23 格式:PPT 页数:150 大小:869.50KB
返回 下载 相关 举报
【教学课件】第3章高级编程技术的实现.ppt_第1页
第1页 / 共150页
【教学课件】第3章高级编程技术的实现.ppt_第2页
第2页 / 共150页
点击查看更多>>
资源描述

《【教学课件】第3章高级编程技术的实现.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第3章高级编程技术的实现.ppt(150页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 第第3 3章章 高级编程技术的实现高级编程技术的实现 主要内容主要内容操作手段显示方式图形绘制技术图像技术动画技术发声技术汉字显示技术精确的时间控制技术1第第3 3章章 高级编程技术的实现高级编程技术的实现操作手段:键盘操作手段:键盘在键盘内有一个微处理器,用来扫描和检测每个键的按下和抬起状态,然后以程序中断(INT9H)的方式与主机通信,向主机传送一个字节的按键扫描码。接着ROM中BIOS内的键盘中断处理程序,将按键扫描码翻译成对应的ASCII码或扩充的ASCII码,存放在AX寄存器中。它不是它不是ASCIIASCII码;其码;其0606位标识位标识了每个键在键盘上的位置,最了每个键在键盘

2、上的位置,最高位为高位为0 0对应该键是被按下;对应该键是被按下;1 1对应松开;它并不能区别大小对应松开;它并不能区别大小写字母,而且一些特殊键不产写字母,而且一些特殊键不产生扫描码直接引起中断调用生扫描码直接引起中断调用 键名AHAL字符键ASCII码ASCII码功能键/组合键扩充码的ASCII码0原理原理2第第3 3章章 高级编程技术的实现高级编程技术的实现操作手段:键盘操作手段:键盘方法方法方法一:直接使用声明在bios.h中的库函数bioskey();方法二:通过库函数int86(),调用BIOS的INT 16H、功能 号为0的中断。它将按键的扫描码存放在AH寄存器 中;方法三:简单

3、地利用声明在conio.h中的库函数kbhit()。3第第3 3章章 高级编程技术的实现高级编程技术的实现操作手段:键盘操作手段:键盘方法一方法一int bioskey(int cmd)int bioskey(int cmd);/*/*参数cmd用来确定函数如何操作*/cmd=0bioskey()返回按健的键值,该值是2个字节的整型数。若没有键按下,则该函数一直等待若没有键按下,则该函数一直等待,直到有键按下。当按下时,若返回值的低8位为非零,则表示为普通键,其值代表该键的ASCII码。若返回值的低8位为0,则高8位表示为扩展的ASCII码,表示按下的是特殊功能键4第第3 3章章 高级编程技术

4、的实现高级编程技术的实现操作手段:键盘操作手段:键盘方法一方法一int bioskey(int cmd)int bioskey(int cmd);/*/*参数cmd用来确定函数如何操作*/cmd=1bioskey()查询是否有键按下。若返回非0值,则表示有键按下,若为0表示没键按下。5第第3 3章章 高级编程技术的实现高级编程技术的实现操作手段:键盘操作手段:键盘方法一方法一int bioskey(int cmd)int bioskey(int cmd);/*/*参数cmd用来确定函数如何操作*/cmd=2bioskey()将返回一些控制键是否被按过,按过的状态由该函数返回的低8位的各位值来表

5、示:字节位对应的16进制数含义00 x01右边的shift键被按下10 x02左边的shift键被按下20 x04Ctrl键被按下30 x08Alt键被按下40 x10ScrollLock已打开50 x20NumLock已打开60 x40CapsLock已打开70 x80Insert已打开6第第3 3章章 高级编程技术的实现高级编程技术的实现操作手段:键盘操作手段:键盘方法二方法二/*读键函数,返回扫描码*/intgetKeySCode()unionREGSrg;rg.h.ah=0;int86(0 x16,&rg,&rg);returnrg.h.ah;7键盘扫描码表见课程主页键盘扫描码表见课程

6、主页第第3 3章章 高级编程技术的实现高级编程技术的实现操作手段:键盘操作手段:键盘方法三方法三int kbhit(void);若按了键盘,该函数返回值1,否则返回值0。8第第3 3章章 高级编程技术的实现高级编程技术的实现操作手段:鼠标操作手段:鼠标DOS操作系统和TurboC2.0并不支持鼠标器的操作。要操纵鼠标器,首先必须安装相应的鼠标驱动程序。鼠标驱动程序由生产鼠标的厂家提供,它提供了许多鼠标操作的功能。这些功能可以通过INT 33H鼠标中断调用来使用。原理原理9第第3 3章章 高级编程技术的实现高级编程技术的实现操作手段:鼠标操作手段:鼠标常用功能常用功能/*显示鼠标器光标*/voi

7、dcursorOn()unionREGSr;structSREGSs;1;/*1号鼠标器功能:显示鼠标光标*/msvisibleTRUE;int86x(0 x33,&r,&r,&s);10第第3 3章章 高级编程技术的实现高级编程技术的实现/*关闭鼠标器光标*/void cursorOff()union REGS r;struct SREGS s;2;/*2号鼠标器功能:不显示鼠标光标*/msvisibleFALSE;int86x(0 x33,&r,&r,&s);操作手段:鼠标操作手段:鼠标常用功能常用功能11第第3 3章章 高级编程技术的实现高级编程技术的实现/*设定鼠标光标的初始位置*/v

8、oid cursorXY(unsigned int x,unsigned int y)union REGS r;struct SREG s;r.x.ax=4;/*4号鼠标器功能:设置鼠标光标位置*/r.x.cx=x;/*设定光标x坐标*/r.x.dx=y;/*设定光标y坐标*/int86x(0 x33,&r,&r,&s);mousex=x;mousey=y;操作手段:鼠标操作手段:鼠标常用功能常用功能12第第3 3章章 高级编程技术的实现高级编程技术的实现/*报告鼠标器当前光标位置和当前按键状态*/voidmouseRead()unionREGSrl,r2;structSREGSs;r1.x.

9、ax=3;/*3号鼠标器功能:取按钮状态和鼠标位置*/int86x(0 x33,&r1,r2,&s);mousex=r2.x.cx;/*鼠标器光标x方向坐标*/mousey=r2.x.dx;/*鼠标器光标y方向坐标*/mousekey=r2.x.bx;/*鼠标器按健状态*/操作手段:鼠标操作手段:鼠标常用功能常用功能13第第3 3章章 高级编程技术的实现高级编程技术的实现/*等待鼠标器的某种状态*/void wait(int i)do mouseread();while(mousekey=i);操作手段:鼠标操作手段:鼠标常用功能常用功能14第第3 3章章 高级编程技术的实现高级编程技术的实现

10、主要内容主要内容操作手段显示方式图形绘制技术图像技术动画技术发声技术汉字显示技术精确的时间控制技术15第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:显示系统显示方式:显示系统显卡在计算机主机和显示器之间起到了信息转换和视频发送作用,必须与显示器配套。不同种类的显卡支持的显示模式种类不同,而且同一显卡一般可以支持多种显示模式。一种显示模式指定了相应显示器的工作方式、分辨率和颜色数目。显显 卡卡16第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:显示系统显示方式:显示系统 常见显卡及其模式常见显卡及其模式17第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式

11、:显示系统显示方式:显示系统 显示器工作方式显示器工作方式显示器有两种工作方式,即文本显示方式和图形显示方式,它们的主要差别是显示存储器(VRAM)中存的信息不同。文本方式时,VRAM存放要显示字符的ASCII码,用它作为地址,取出字符发生器ROM中存放的相应字符的图像变成视频信号在显示器屏幕上进行显示。图形方式时,则要显示的图形的图像直接存在VRAM中,VRAM中某地址单元存放的数就表示了相应屏幕上某行和列上的像素及颜色。18第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:显示方式:也称作字符显示方式,是TurboC确省的显示方式。文本方式屏幕的最大分辨单位是单个字符,字符显示

12、的位置用行和列坐标来表示。文本方式文本方式19第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:文本方式显示方式:文本方式方式设定方式设定TurboC支持的几种文本显示方式可以用下面的函数来设置:void textmode(int newmode);。20第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:文本方式显示方式:文本方式颜色设置颜色设置void textbackground(int color);/*设置字符背景颜色*/void textcolor(int color);/*设置字符颜色*/void textattr(int attr);/*/*可同时设置文本

13、的字符和背景颜色*/颜色函数颜色函数21第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:文本方式显示方式:文本方式窗口设置窗口设置Turbo C确省定义的文本窗口为整个屏幕。用户可以通过函数:void window(int left,int top,int right,int bottom);定义屏幕上的一个矩形域作为窗口窗口。参数(left,top)是窗口左上角所在的屏幕坐标,(right,bottom)是窗口的右下角所在的屏幕坐标。窗口定义之后,用有关窗口的输入输出函数就可以只在此窗口内进行操作而不超出窗口的边界。另外,一个屏幕可以定义多个窗口,但现行窗口只能有一个。22第第

14、3 3章章 高级编程技术的实现高级编程技术的实现显示方式:文本方式显示方式:文本方式窗口操作窗口操作窗口内文本输出函数:窗口内文本输出函数:int cprintf(char*format,表达式表表达式表);int cputs(char*str);int putch(int ch);/*这三个函数受窗口的控制,窗口内显示光标的位置就是它们开始输出的位置。当输出行超过窗口右边界或输出到窗口底部边界时,会自动转到窗口内的下一行输出或自动上卷窗口内的内容继续输出*/光标操作函数:光标操作函数:void gotoxy(int x,int y);/*把光标移到窗口把光标移到窗口(x,y)处处*/23第第

15、3 3章章 高级编程技术的实现高级编程技术的实现显示方式:文本方式显示方式:文本方式屏幕操作屏幕操作 清屏函数:清屏函数:void clrscr(void);/*清除窗口文本,光标移到清除窗口文本,光标移到(1,1)*/void clreol(void);/*清除窗口从光标位置开始到本行清除窗口从光标位置开始到本行 结尾的所有字符,但光标不变结尾的所有字符,但光标不变*/void delline(void);/*删除当前窗口的当前行删除当前窗口的当前行*/24第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:文本方式显示方式:文本方式屏幕操作屏幕操作 屏幕文本移动函数:屏幕文本移动

16、函数:void movetext(int x1,int y1,int x2,int y2,int x3,int y3);屏幕文本存取函数屏幕文本存取函数void gettext(int x1,int y1,int x2,int y2,void*buffer);void puttext(int x1,int y1,int x2,int y2,void*buffer);25第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:文本方式显示方式:文本方式编制一个程序,将屏幕垂直平分成两个窗口,左边窗口为蓝色背景,白色前景,右边窗口为绿色背景,红色前景。两个窗口都设计为文本输入,即在窗口中可以

17、输入文字,在窗口屏幕中显示出来。使用tab键在左右两个窗口中切换,每个窗口都有光标,活动窗口光标进行闪烁。应应用用实实例例 问题描述问题描述26第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:文本方式显示方式:文本方式首先用文本窗口函数window(int x1,int y1,int x2,int y2)画出两个窗口,用textcolor(int color),textbackground(int color),clrscr(void)等进行窗口属性的设置。用tab键键进行两个窗口间的循环切换,在每次切换前先调用gettext(int left,int top,int right

18、,int bottom,void*buf)函数把当前矩形窗口上的字符拷贝到由buf所指向的内存中,在切换到另一个窗口后调用puttext(int left,int top,int right,int bottom,void*buf)把先前存储在该窗口buf所指向的内存中的字符拷贝到当前窗口中,并用gotoxy(int x,int y)把光标移到原先所在位置,因此可以接着先前的文本继续编辑。应应用用实实例例 设计思想设计思想27第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:文本方式显示方式:文本方式应应用用实实例例 程序运行截图程序运行截图28第第3 3章章 高级编程技术的实现高

19、级编程技术的实现显示方式:显示方式:图形方式图形方式图形显示方式可以满足在屏幕上作图的要求。在此方式下,屏幕显示的单位是像素。屏幕显示的像素大小(分辨率)可以通过设置不同的显示方式来改变。像素在屏幕上的位置可由其所在的x,y坐标来决定。此时,屏幕的坐标系统就象一个倒置的直角坐标系。29第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式方式设定方式设定图形系统的初始化:图形系统的初始化:用什么类型的显卡的驱动程序采用什么模式的图形方式适配器驱动程序的寻找路径名。注意:所用系统的卡一定要支持所选用的显示模式,否则将出错。30第第3 3章章 高级编程技术的实现高

20、级编程技术的实现显示方式:图形方式显示方式:图形方式方式设定方式设定图形系统的初始化函数:图形系统的初始化函数:void far initgraph(int far*pdriver,int far*pmode,char far*ppath_for_driver);enumgraphics_driver DETECT,CGA,MCGA,EGA,EGA64,EGAMONO,IBM8514,HERCMONO,ATT400,VGA,PC3270;31第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式方式设定方式设定图形系统的初始化函数:图形系统的初始化函数:voi

21、d far initgraph(int far*pdriver,int far*pmode,char far*ppath_for_driver);32第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式方式设定方式设定图形系统检测函数图形系统检测函数:void far detectgraph(int far*pdriver,int far*pmode);完成对适配器的检查并得到显示器类型号和相应的最高分辨率模式 将graphdriver设成DETECT,initgraph()将调用detectgraph()自动检测所用显卡类型,并将相应的驱动程序装入,并将其

22、最高的显示模式作为当前显示模式。int graphdriver=DETECT,graphmode;initgraph(&graphdriver,&graphmode,);33第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式方式设定方式设定清屏函数:清屏函数:画图前一般需清除屏幕,使得屏幕如同一张白纸,以画最新最美的图画。void far cleardevice(void);图形系统的关闭:图形系统的关闭:当画图结束时可以通过调用关闭图形系统的函数:void far closegraph(void);使显示器恢复到调用initgraph()函数之前的文本方

23、式。34第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式颜色设置颜色设置前景色设置函数:前景色设置函数:void far setcolor(int color);背景色设置函数:背景色设置函数:void far setbkcolor(int color);35第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式颜色设置颜色设置前景色设置函数:前景色设置函数:void far setcolor(int color);背景色设置函数:背景色设置函数:void far setbkcolor(int color);36第第3

24、3章章 高级编程技术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式颜色设置颜色设置CGA前景色的取值:前景色的取值:37第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式颜色设置颜色设置CGA背景色的取值:背景色的取值:38第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式颜色设置颜色设置EGA/VGA调色板:调色板:setcolor(color)时color的取值;0号索引位置的颜色总是和背景色相同;16个索引号意味着同时最多可显示16种不同的颜色64/256色选一39第第3 3章章 高级编程技术的实现

25、高级编程技术的实现显示方式:图形方式显示方式:图形方式颜色设置颜色设置EGA/VGA调色板:调色板:整体设置:void far setallpalette(struct palettetype far*palette);#defineMAXCOLORSl5structpalattetypeunsignedcharsize;signedcharcolorsMAXCOLORS+1;;单色设置:单色设置:voidfar setpalette(int index,int actual_color);40第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式颜色设置颜色

26、设置EGA/VGA标准色:标准色:41第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式图视口图视口设置函数设置函数:void far setviewport(int xl,int y1,int x2,int y2,clipflag);其中(x1,y1)为图视口的左上角所在的原屏幕物理坐标,(x2,y2)为右下角所在的原屏幕物理坐标。clipflag参数clipflag若为0,则超出图视口的图形部分仍将显示出来;否则,超出图视口的部分将被切除而不显示。清除函数:清除函数:void far clearviewport(void)42第第3 3章章 高级编程技

27、术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式文本输出文本输出当前位置文本输出函数:当前位置文本输出函数:void far outtext(char far*textstring);定位文本输出函数:定位文本输出函数:void far outtextxy(int x,int y,char far*textstring);文本输出字符串函数文本输出字符串函数 int sprintf(char*string,char*format,argument,);43第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式文本输出文本输出 文本输出位置函数:文

28、本输出位置函数:void far settextjustify(int horiz,int vert);44第第3 3章章 高级编程技术的实现高级编程技术的实现显示方式:图形方式显示方式:图形方式文本输出文本输出 定义文本字型函数:定义文本字型函数:void far settextstyle(int font,int direction,int char size);45第第3 3章章 高级编程技术的实现高级编程技术的实现#includemain()inti,graphdriver,graphmode,size,page;chars30;graphdriver=DETECT;initgraph

29、(&graphdriver,&graphmode,);cleardevice();settextstyle(DEFAULT_FONT,HORIZ_DIR,2);settextjustify(LEFT_TEXT,0);outtextxy(220,20,Defautfont);settextstyle(TRIPLEX_FONT,HORIZ_DIR,2);settextjustify(LEFT_TEXT,0);outtextxy(220,50,Triplexfont);应应用用实实例例 程序源代码程序源代码settextstyle(SMALL_FONT,HORIZ_DIR,2);settextjus

30、tify(LEFT_TEXT,0);outtextxy(220,80,Smallfont);settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);settextjustify(LEFT_TEXT,0);outtextxy(220,110,Sansseriffont);settextstyle(GOTHIC_FONT,HORIZ_DIR,2);settextjustify(LEFT_TEXT,0);outtextxy(220,140,gothicfont);getch();closegraph();显示方式:图形方式显示方式:图形方式文本输出文本输出46第第3 3章

31、章 高级编程技术的实现高级编程技术的实现应应用用实实例例 程序输出程序输出显示方式:图形方式显示方式:图形方式文本输出文本输出47 第第3 3章章 高级编程技术的实现高级编程技术的实现主要内容主要内容操作手段显示方式图形绘制技术动画技术发声技术汉字显示技术图像技术精确的时间控制技术48第第3 3章章 高级编程技术的实现高级编程技术的实现图形绘制图形绘制void far moveto(int x,int y);移动画笔到指定的(x,y)位置,移动过程不画。void far moverel(int dx,int dy);画笔从现行位置(x,y)处移到一位置增量处(x+dx,y+dx),移动过程不画

32、:int far getx(void);得到当前画笔的x位置int far gety(void);得到当前画笔的y位置:画笔定位:画笔定位 49第第3 3章章 高级编程技术的实现高级编程技术的实现图形绘制图形绘制 画点函数:画点函数:void far putpixel(int x,int y,int color);该函数表示在指定的x,y位置画一点,点的显示颜色由设置的color值决定。int far getpixel(int x,int y);该函数与putpixel()相对应,它得到在(x,y)点位置上的像素的颜色值:点和线:点和线 50第第3 3章章 高级编程技术的实现高级编程技术的实现

33、图形绘制:图形绘制:点和线点和线 画线函数:画线函数:void far line(int x0,int y0,int x1,int y1);该函数从(x0,y0)点到(x1,y1)点画一直线。void far lineto(int x,int y);该函数将从现行画笔位置到(x,y)点画一直线。void far linerel(int dx,int dy);该函数将从现行画笔位置(x,y)到位置增量处(x+dx,y+dy)画一直线。51第第3 3章章 高级编程技术的实现高级编程技术的实现 线类型的设置:线类型的设置:在确省的情况下,画线函数画出的线都是一个像素点宽的细实线。也可以在画线之前通过

34、函数:void far setlinestyle(int linestyle,unsigned upattern,int thickness);定义线的类型和粗细。setlinestyle(4,0 xF3D0,1)设置的线型设置的线型图形绘制:图形绘制:点和线点和线 52第第3 3章章 高级编程技术的实现高级编程技术的实现BIOS的10H中断负责显示器服务,该中断的主要功能通过对AH来设置:AH=00H,功能为设置显示方式。此时通过对AL进行设置来设定显示方式,如设置AL=13H,则显示方式设置为VGA的256色320200图形显示模式。AH=0CH,功能为画点。这时AL中设置的值为颜色号,C

35、X和DX的值决定画点的位置坐标。图形绘制:图形绘制:点和线点和线 利用利用BIOS调用调用53第第3 3章章 高级编程技术的实现高级编程技术的实现#include#include int main()int i,j;union REGS inreg,outreg;inreg.h.ah=0;/*置屏幕显示方式*/inreg.h.al=0 x13;/*定义VGA256色320200图形模式*/int86(0 x10,&inreg,&outreg);/*调用中断0 x10*/for(i=0;i256;i+)for(j=0;j200;j+)inreg.h.ah=0 x0c;/*写点*/应应用用实实例例

36、在屏幕上画出颜色不同的在屏幕上画出颜色不同的256条直线的条直线的程序源代码程序源代码 inreg.h.al=i;/*置颜色号*/inreg.h.ch=0;/*决定画点位置*/inreg.h.cl=i;inreg.h.dh=0;inreg.h.dl=j;int86(0 x10,&inreg,&outreg);getch();inreg.h.ah=0;inreg.h.al=2;/*返回到文本方式*/int86(0 x10,&inreg,&outreg);图形绘制:图形绘制:点和线点和线 利用利用BIOS调用调用54第第3 3章章 高级编程技术的实现高级编程技术的实现图形绘制图形绘制:矩形、圆和弧

37、线矩形、圆和弧线 画矩形的函数:画矩形的函数:void far rectangle(int xl,int y1,int x2,int y2);画椭圆、圆和扇形图函数:画椭圆、圆和扇形图函数:void ellipse(int x,int y,int stangle,int endangel,int xradius,int yradius);void far circle(int x,int y,int radius);void far arc(int x,int y,int stangle,int endangle,int radius);55第第3 3章章 高级编程技术的实现高级编程技术的实现

38、编写程序,使用鼠标进行如下操作:按住鼠标器的任意键并移动,十字光标将随鼠标而移动,根据按键的不同采用不同的形状来画出相应的移动轨迹:当仅按下左键时用圆圈;仅按下右键时用矩形;其它按键情况用线条。应应用用实实例例 问题描述问题描述图形绘制图形绘制56第第3 3章章 高级编程技术的实现高级编程技术的实现结合鼠标使用方法和上述的图形绘制函数来解决问题。由于在Windows2000/XP下不支持INT 33的1号显示鼠标光标功能,可以用画线函数line()画出一个十字形光标。光标的移动是通过将原位置光标用背景色再画而使其消失,然后在新位置处重新画一个光标,从而实现光标移动的动感。应应用用实实例例 设计

39、思想设计思想图形绘制图形绘制57第第3 3章章 高级编程技术的实现高级编程技术的实现应应用用实实例例 程序运行截图程序运行截图图形绘制图形绘制58第第3 3章章 高级编程技术的实现高级编程技术的实现图形绘制:图形绘制:封闭图形的填色封闭图形的填色 填充设置函数填充设置函数:void far setfillstyle(int pattern,int color);该函数将用设定的color颜色和pattern图模式对后面画出的轮廓图进行填充,这些图轮廓是由待定函数画出的。59第第3 3章章 高级编程技术的实现高级编程技术的实现图形绘制:图形绘制:封闭图形的填色封闭图形的填色 填充设置函数填充设置

40、函数:void far setfillstyle(int pattern,int color)60第第3 3章章 高级编程技术的实现高级编程技术的实现图形绘制:图形绘制:封闭图形的填色封闭图形的填色 用户自定义填充函数用户自定义填充函数:void far setfillpattern(char upattefn,int color);该函数设置用户自定义可填充模式,以color指出的颜色对封闭图形进行填充。参数upattern是一个指向8个字节存储区的指针,这8个字节表示了一个88像素点阵组成的填充图模,它是由用户自定义的,用来对封闭图形填充。8个字节的图模是这样形成的:每个字节代表一行,而每

41、个字节的每一个二进制位代表该行的对应列上的像素。是1,则用color显示,是0则不显示。61第第3 3章章 高级编程技术的实现高级编程技术的实现图形绘制:图形绘制:封闭图形的填色封闭图形的填色 得到目前的填充模式和颜色的函数得到目前的填充模式和颜色的函数:void far fillsettings(struct fillsettingstype far*fillinfo);void far getfillpattern(char*upattern)void far getfillpattern(char*upattern);62第第3 3章章 高级编程技术的实现高级编程技术的实现图形绘制:图形

42、绘制:封闭图形的填色封闭图形的填色 可填充的基本图形函数:可填充的基本图形函数:(这些函数绘制的图形,将根据事先用setfillstyle函数设置的填充模式和颜色,或按缺省方式进行填充)void bar(int x1,int y1,int x2,int y2);void far pieslice(int x,int y,int stangle,int endangle,int radius);void far bar3d(int x1,int y1,int x2,int y2,int depth,int topflag);void far sector(int x,int y,int stan

43、gle,int endang1e,int xradius,int yradius);void far fillellipse(int x,int y,int xradius,int yradius);void far fillpoly(int numpoints,int far polypoints);63第第3 3章章 高级编程技术的实现高级编程技术的实现图形绘制:图形绘制:封闭图形的填色封闭图形的填色 可对任意封闭图形填充的函数可对任意封闭图形填充的函数:void void far far floodfill(int floodfill(int x x,int int y y,int in

44、t border)border);该函数将对任一封闭图形进行填充,其颜色和模式将由设定的或缺省的图模与颜色决定。其中参数(x,y)为封闭图形中的任一点,border是封闭图形的边框颜色。编程时该函数位于画封闭图形(即要填充的图形)的代码之后。64第第3 3章章 高级编程技术的实现高级编程技术的实现#includemain()inti,graphdriver,graphmode,size,page;chars30;graphdriver=DETECT;initgraph(&graphdriver,&graphmode,);cleardevice();setbkcolor(BLUE);setvie

45、wport(40,40,600,440,1);/*开图视口*/setfillstyle(1,2);setcolor(YELLOW);rectangle(0,0,560,400);floodfill(50,50,14);/*用绿色填充矩形框*/rectangle(20,20,540,380);setfillstyle(1,13);floodfill(2l,300,14);/*用淡洋红色填充矩形框*/setcolor(BLACK);应应用用实实例例 程序源代码程序源代码settextstyle(1,0,6);/*设置字形方向,尺寸*/outtextxy(100,60,WelcomYou);setv

46、iewport(100,200,540,380,0);setcolor(14);setfillstyle(1,12);rectangle(20,20,420,120);settextstyle(2,0,9);floodfill(21,100,14);/*用深蓝色填充*/sprintf(s,“LetsstudyTurboC”);setcolor(YELLOW);outtextxy(60,40,s);/*用黄色显示*/setcolor(1);settextstyle(4,0,3);outtextxy(110,80,s);getch();closegraph();图形绘制图形绘制65第第3 3章章

47、高级编程技术的实现高级编程技术的实现应应用用实实例例 程序输出程序输出图形绘制图形绘制66 第第3 3章章 高级编程技术的实现高级编程技术的实现主要内容主要内容操作手段显示方式图形绘制技术图像技术动画技术发声技术汉字显示技术精确的时间控制技术67第第3 3章章 高级编程技术的实现高级编程技术的实现图像技术图像技术:图像的二种来源图像的二种来源(1)屏幕图像:在图形方式下所绘图形形成的像素点图像。图像数据直接存储在VRAM中,VRAM中某地址单元存放的数就表示了相应屏幕上某行和列上的像素及其颜色值。(2)图像文件:图像数据以一定的格式存储在文件中。需要有专门的软件来支持,或自己编写程序来读取、显

48、示和生成某种格式的图像文件。首先必须要了解某种图像文件的格式。68第第3 3章章 高级编程技术的实现高级编程技术的实现图像技术:屏幕图像与图像技术:屏幕图像与VRAM直接写屏:在图形方式下将图像数据直接写入VRAM的过程,即图像显示过程。直接写屏是最快的图像显示方法。69第第3 3章章 高级编程技术的实现高级编程技术的实现图像技术:图像技术:VRAM与系统存储器的对应关系与系统存储器的对应关系CGA的VRAM对应的内存地址开始于B8000H,VGA、EGA的开始于A0000H。对CGA,VRAM仅有16K字节;对VGA和EGA,VRAM可达256K字节,它分成独立的4个64K字节部分,这样的每

49、个部分称为一个位面或页面(编号0-3),它们共同占有一块内存空间,即用同一的64K个地址。相应内存的每个地址实际上代表VRAM4个位面上相并列的4个字节。对于SVGA,由于它要存取更高分辨率或更多颜色的数据,一般都至少拥有512K以上的VRAM,但其所占用的内存地址仍大都是64K,因此也需要划分许多页面,对应到A0000H或其它的视频内存地址上。70第第3 3章章 高级编程技术的实现高级编程技术的实现图像技术:屏幕图像的允许读写过程图像技术:屏幕图像的允许读写过程允许读的过程是:首先通过索引寄存器(接口地址为0 x3ce)选择读位面选择寄存器(其索引号为4),然后通过读位面选择寄存器(接口地址

50、0 x3cf)选择位面号。相应的代码为:outportb(0 x3ce,4);/*将索引号4送索引寄存器,选择读位面选择寄存器*/outportb(0 x3cf,n);/*将选择的位面号n送读位面选择寄存器,允许该位面可读*/71第第3 3章章 高级编程技术的实现高级编程技术的实现图像技术:屏幕图像的读写过程图像技术:屏幕图像的读写过程允许写的过程是:首先通过索引寄存器(接口地址为0 x3c4)选择位面写允许寄存器(索引号为2),然后通过接口地址0 x3c5选择位面号。相应的代码为:outportb(0 x3c4,2);/*将索引号2送索引寄存器,选择位面写允许寄存器*/outportb(0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁