好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

graphics_2012chapter3.ppt

91页
  • 卖家[上传人]:豆浆
  • 文档编号:7926042
  • 上传时间:2017-08-10
  • 文档格式:PPT
  • 文档大小:1.86MB
  • / 91 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第三章 C语言图形程序设计基础,屏幕设置,3.1,第三章 C语言图形程序设计基础,3.1 屏幕设置一、屏幕显示方式与坐标系,1. 文本方式与字符坐标系 在屏幕上只能显示字符的方式称为文本方式在文本方式下,屏幕上可以显示的最小单位是字符为了能在指定位置显示每个字符,C语言提供了字符坐标系左上角为坐标原点(1,1),,,水平方向(x轴)分为若干列,垂直方向(y轴)分为若干行,第三章 C语言图形程序设计基础,如:(8,20)表示字符位于屏幕第8行第20列Turbo C支持以下6种不同的显示方式: (l)BW40 黑白25×40(25行,40列)(2)C40 彩色25×40(3)BW80 黑白25×80(4)C80 彩色25×80(5)MONO 单色25×80(6)C4350彩色43×80(EGA),50×80(VG) 显示方式不同,所显示的字符的列数和行数也不一样,颜色也有区别,屏幕上所显示的字符数量也不一样第三章 C语言图形程序设计基础,2.图形方式与点坐标 在屏幕上显示的图形称图形方式。

      屏幕是由像素点组成的,其像素点多少决定了屏幕的分辨率分辨率越高,显示图形越细致,质量越好 在图形方式下,屏幕上每个像素的显示位置用点坐标来描述点坐标系,左上角为坐标原点(0,0),垂直方向为y轴,自上向下,水平方向为x轴,自左向右,,,,第三章 C语言图形程序设计基础,,分辨率不同,水平方向和垂直方向的点数也不一样,即其maxx,maxy数值也不同 在Turbo C中,坐标数据可以用两种形式给出:一种是绝对坐标;另一种是相对坐标绝对坐标的参考点是坐标的原点(0,0),x和y只能取规定范围内的正整数相对坐标是相对“当前点”的坐标,所以其坐标的参考点不是坐标系的原点,而是当前点在相对坐标中,x和y的取值是相对于当前点在x方向和y方向上的增量,x和y可以是正整数,也可以是负整数点坐标系坐标值的范围决定于所使用适配器/显示分辨率第三章 C语言图形程序设计基础,二、图形驱动程序与图形模式,1. 图形驱动程序 支持不同图形适配器的一组程序 由于图形显示器的种类繁多,其控制方式也各有差异,所以要显示图形就需先装入相应的图形驱动程序 Turbo C提供了几种图形驱动程序可支持的图形适配器。

      下表列出驱动程序其相应的符号常量和规定值第三章 C语言图形程序设计基础,2. 图形模式 每种图形显示器有不同的图形显示模式 由于每种图形显示器各有几种不同的图形显示模式,因此,要显示图形就必须确定所用的显示模式,也就是说,要显示图形,不但要先装入相应驱动程序,而且还要决定所用的显示模式不同的图形驱动程序有不同的图形模式;即使在同一图形驱动程序下,也可能会有几种图形模式 图形驱动程序及其相应模式具体见书P53表3.2,第三章 C语言图形程序设计基础,图形驱动程序及其相应模式(部分),三 、图形系统初始化和模式控制,Turbo C中图形函数均在头文件“graphics.h”中定义,所以,凡是在程序中要调用这些图形函数,都必须在程序文件的开头写上文件包含命令: # include <graphics.h>,第三章 C语言图形程序设计基础,1. 图形系统初始化 (1).问题的提出 一般缺省情况下,屏幕为80列25行的文本方式在文本方式下,所有的图形函数均不能操作,因此在使用图形函数绘图之前,必须将屏幕显示适配器设置为一种图形模式,这就是图形初始化过程 图形系统初始化首先要调用initgraph()函数,它通过从磁盘上装入一个图形驱动程序,来初始化图形化系统,并将系统设置为图形模式。

      第三章 C语言图形程序设计基础,(2).初始化函数initgraph()函数格式为:void far initgraph(int *gdriver;int *gmode,char *path);①gdriver:是一个整型值,用来指定要装入的图形驱动程序,该值在头文件 graphics.h中定义,如p51表3.l所示②gmode:是一个整型值,用来设置图形显示模式图形显示模式决定了显示的分辨率,可同时显示的颜色的多少,调色板的设置方式等,几种不同的图形显示模式如p53表3.2所示第三章 C语言图形程序设计基础,③path:是一个字符串,用来指明图形驱动程序所在路径如果驱动程序就在用户当前目录下,则该参数可以空字符串,否则应给出具体路径名一般情况下,Turbo C安装在C盘的TC目录中,则该路径为:C:\TC,如果写在参数中则为“C:\\TC”注意:前两个参数实际上是整型指针,调用时应加上地址运算符“&”第三章 C语言图形程序设计基础,对far关键字的解释:far并非C语言的标准关键字,主要是远程链接的作用,可以将其视为远指针函数,以内存管理是段式管理为例,没有far这个关键字时,内存地址仅是段内跳转,有far这个关键字时内存地址是段间跳转。

      几个头文件,graphics.hstdlib.hconio.hstdio.h,第三章 C语言图形程序设计基础,(3)初始化方式①已知显示器类型的图形系统初始化 已知所用图形显示器的种类和要使用的图形模式,初始化图形系统可如下面程序所示:例3.1#include "graphics.h" main(){int gdriver,gmode; gdriver=CGA; /*设置驱动程序为CGA*/ gmode=CGAC0; /*选用CGA图形模式*/ initgraph(&gdriver,&gmode,"c:\\TC"); /*初始化图形系统*/ bar3d(10,20,50,80,0,0); /*画一实心长方形*/ getch(); /*等待按一键结束*/ closegraph(); /*关闭图形系统,回到文本方式*/},,此处也可用整型常数代替符号常量gdriver=1; gmode=0;,第三章 C语言图形程序设计基础,②不知显示器类型的图形初始化 Turbo C提供了一个对图形显示器硬件测试的函数detectgraph() 它的格式为:void far detectgraph(int *gdriver,int *gmode);该函数在计算机有图形适配器的情况下,确定图形适配器的类型,若系统有图形适配器,则返回适合于适配器的图形驱动程序的代码,用gdriver指向的整型量表示,该函数把gmode所指的变量设置为适配器所能支持的最高分辨率。

      若系统无图形适配器,则gdriver所指变量为-2第三章 C语言图形程序设计基础,例3.2#include "stdio.h"#include “conio.h”#include “stdlib.h”#include "graphics.h"main(){ int gdriver,gmode; detectgraph(&gdriver,&gmode); /*测试结果存放于gdriver,gmode中*/ if(gdriver<0){ printf("there is not graphics displayer\n"); exit(1); } /*无图形显示模式时,显示信息,停止程序*/,标准的输入输出函数,调用DOS控制台I/O子程序的各个函数,说明一些常用的子程序:转换子程序,搜索、排序子程序,第三章 C语言图形程序设计基础,printf("detect graphics driver is # %d,mode is # %d\n ",gdriver,gmode); /*显示硬件测试结果*/ getch(); /*等待按一键*/ initgraph(&gdriver,&gmode,"c:\\tc"); /*初始化*/ bar3d(10,20,50,80,0,0); /*画实心长方形*/ getch(); closegraph(); /*关闭图形系统,返回文本模式*/ return (0);},第三章 C语言图形程序设计基础,③自动初始化图形系统 可以把上述对图形显示器的检测和初始化工作放在一起来自动完成,即规定gdriver=DETECT,则 initgraph()函数会自动按照系统所配置的图形显示器来确定驱动程序,并把图形模式设置为检测到驱动程序的最高分辨率,实现图形系统初始化。

      第三章 C语言图形程序设计基础,例3.3# include "graphics.h"# include “conio.h”main(){ int gdriver=DETECT,gmode; /*自启动搜寻显示器类型和显示模式*/ initgraph(&gdriver,&gmode,"c:\\tc"); /*初始化*/ bar3d(10,20,50,80,0,0); /*画实心长方形*/ getch(); /*等待按一键*/ closegraph(); /*关闭图形系统,返回文本模式*/ return (0);},第三章 C语言图形程序设计基础,2. 图形系统的关闭 从上述几个例子已看到在图形编程中均先用函数initgraph()对图形系统进行初始化,即启动图形系统,进人绘图状态,而在程序结束前都用函数closegraph()关闭图形系统,以释放图形驱动程序所占用的内存空间,使系统回到文本文件关闭图形系统函数格式为: void far closegraph();所有有关图形显示程序一定是在initgraph()和closegraph()之间。

      从initgraph()后,显示器就进入图形方式,而从closegraph()后,显示器就退出图形方式回到文本显示方式第三章 C语言图形程序设计基础,,3. 图形模式的控制,为了对图形系统模式进行控制,即从图形模式转换成文本模式,或从文本模式转换成图形模式,或设置驱动器有效模式,或读取当前图形模式和范围,Turbo C都提供了相关函数: (1)从图形模式转换成文本模式(2)从文本模式转换成图形模式(3)设置驱动器有效模式(4)读取当前图形模式和范围,第三章 C语言图形程序设计基础,(l)返回当前图形模式值 int far getgraphmode(void); 函数返回当前图形模式,其返回值如表p51 3.2所示 (2)恢复屏幕在图形初始化前模式 void far restorecrtmode(void);函数使initgraph()函数所选定图形模式关闭,返回到调用initgraph()前状态3)设置系统图形模式并清屏幕 void far setgraphmode(int gmode);函数把当前图形模式设置为gmode所指定的模式第三章 C语言图形程序设计基础,(4)获取图形驱动器可使用的模式范围 void far getmoderange(int driver,int *lomode,int *himode); 该函数确定由driver所指定图形驱动器能够支持的最低和最高模式,并且把这些值放在由lomode和himode所指向变量中。

      通过调用此函数,可实现使显示器暂时离开图形模式进入文本模式,进行文本输出,然后不经过initgraph再返回图形模式第三章 C语言图形程序设计基础,,例3.4#include "graphics.h"#include "stdio.h" #include “conio.h”main(){ int gdriver,gmode,lo,hi; gdriver=CGA; /*设置CGA的图形驱动程序*/ getmoderange(CGA,&lo,&hi); /*获得CGA的图形模式范围*/ printf("CGA surpporting modes range from %d to %d.\dn",lo,hi); /*显示CGA显示模式范围*/ initgraph(&gdriver,&lo,"c:\\tc"); /*初始化CGAC0*/,。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.