第2章 一个简单的交互式图形软件精选文档.ppt
《第2章 一个简单的交互式图形软件精选文档.ppt》由会员分享,可在线阅读,更多相关《第2章 一个简单的交互式图形软件精选文档.ppt(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第2 2章章 一个简单的交互式一个简单的交互式图形软件图形软件本讲稿第一页,共十六页第第2 2章章 一个简单的交互式图一个简单的交互式图形软件形软件 2.1 Turbo C2.1 Turbo C的图形函数的图形函数2.2 Turbo C2.2 Turbo C的图形初始化的图形初始化2.3 2.3 一个简单交互式图形软件一个简单交互式图形软件本讲稿第二页,共十六页2.1 Turbo C2.1 Turbo C的图形函数的图形函数Turbo CTurbo C的两类与图形相关的函数有两类的两类与图形相关的函数有两类1)1)字符屏幕函数字符屏幕函数基本输入输出函数基本输入输出函数屏幕操作函数屏幕操作函
2、数属性控制函数属性控制函数状态查询函数状态查询函数2)2)图形函数图形函数屏幕显示适配器模式控制函数屏幕显示适配器模式控制函数基本图形功能函数基本图形功能函数字符输出函数字符输出函数屏幕状态函数屏幕状态函数屏幕操作函数屏幕操作函数本讲稿第三页,共十六页2.2 Turbo C2.2 Turbo C的图形初始化的图形初始化2.2.1 2.2.1 初始化函数初始化函数在图形函数使用之前,必须把屏幕显示适配器设置为某一种图形模式。在未经定义在图形函数使用之前,必须把屏幕显示适配器设置为某一种图形模式。在未经定义的情况下,绝大多数计算机系统都使用的情况下,绝大多数计算机系统都使用8080列字符模式。由于
3、这不是图形模式,列字符模式。由于这不是图形模式,Turbo Turbo CC的图形函数不能工作。若要将显示适配器设置成图形方式,必须先用的图形函数不能工作。若要将显示适配器设置成图形方式,必须先用initgraph()initgraph()函数初始化屏幕。其原型如下:函数初始化屏幕。其原型如下:void far initgraph(int*graphdriver,int*graphgmode,char*path);void far initgraph(int*graphdriver,int*graphgmode,char*path);initgraph()initgraph()函数将一个图形驱
4、动程序装入内存,并将系统设置成图形模式。如函数将一个图形驱动程序装入内存,并将系统设置成图形模式。如果没有装入图形驱动软件,图形函数将不能操作。果没有装入图形驱动软件,图形函数将不能操作。graphdrivergraphdriver是一个整数,它指定所用的图形驱动程序。用户可以用枚举是一个整数,它指定所用的图形驱动程序。用户可以用枚举常量对它赋值,这些常量定义在常量对它赋值,这些常量定义在graphics.hgraphics.h中。中。*graphmode *graphmode是一个整数,它说明初始化图形模式。是一个整数,它说明初始化图形模式。本讲稿第四页,共十六页示例示例2 21:1:使用图
5、形初始化函数将显示适配器设置为使用图形初始化函数将显示适配器设置为VGAVGA高分辨率图形模式。高分辨率图形模式。#include#include main()main()int graphdriver,graphmode;int graphdriver,graphmode;graphdriver=VGA;/*graphdriver=VGA;/*选选 VGA VGA 驱动器驱动器*/*/graphmode =VGAHI;/*graphmode =VGAHI;/*选选 VGA VGA 高分辨率图形模式高分辨率图形模式*/*/initgraph(&graphdriver,&graphmode,C:
6、tc);/*initgraph(&graphdriver,&graphmode,C:tc);/*图形初始化图形初始化*/*/bar3d(200,200,400,350,50,1);/*bar3d(200,200,400,350,50,1);/*画一长方体画一长方体*/*/getch();getch();closegraph();/*closegraph();/*关闭图形模式关闭图形模式*/*/本讲稿第五页,共十六页大多数情况下编程者并不知道所用的图形显示适配器类型,或者需要编写在不同图形模式下均能运行大多数情况下编程者并不知道所用的图形显示适配器类型,或者需要编写在不同图形模式下均能运行的图形
7、程序,的图形程序,Turbo C Turbo C 提供了一个自动检测显示器硬件的函数提供了一个自动检测显示器硬件的函数,其函数原型为其函数原型为:void far detectgraph(int*graphdriver,*graphmode);void far detectgraph(int*graphdriver,*graphmode);示例示例2-2:2-2:自动进行硬件测试后进行图形初始化程序自动进行硬件测试后进行图形初始化程序#include#include main()main()int graphdriver,graphmode;detectgraph(&graphdriver,&
8、graphmode);/*自动测试硬件*/printf(Detect graphics driver is%d,mode is%dn,graphdriver,graphmode);/*输出测试结果*/getch();initgraph(&graphdriver,&graphmode,“C:tc”);/*根据测试结果初始化屏幕*/bar3d(50,50,250,150,20,1);getch();closegraph();本讲稿第六页,共十六页2.2.2 2.2.2 屏幕长宽比确定屏幕长宽比确定Turbo CTurbo C支持各种不同的视屏适配器和显示模式。支持各种不同的视屏适配器和显示模式。每
9、一种都带有它自己的彩色范围、分辨率和每一种都带有它自己的彩色范围、分辨率和存储页面。每一种图形模式都有其特定的长宽比,即:基于每一象素的宽与高之间的比率。当存储页面。每一种图形模式都有其特定的长宽比,即:基于每一象素的宽与高之间的比率。当我们试图在屏幕上绘制一个特定大小和形状的图形时,这个比率是很重要的。例如,如果用我们试图在屏幕上绘制一个特定大小和形状的图形时,这个比率是很重要的。例如,如果用CGA 320*200CGA 320*200模式,每一象素的高约为宽的两倍。模式,每一象素的高约为宽的两倍。因此,如果我们画因此,如果我们画4*44*4的像素块,将得不到的像素块,将得不到屏幕上的正方形
10、。很显然,当我们要想画一个真正的正方形而不是长方形时,就必须调整模式屏幕上的正方形。很显然,当我们要想画一个真正的正方形而不是长方形时,就必须调整模式的高宽比。的高宽比。getaspectratio()getaspectratio()函数就是为此而设的。我们将在不使用浮点数的情况下,以函数就是为此而设的。我们将在不使用浮点数的情况下,以一种非常有效的方式处理这个长宽比值。为了能用整数来表示高一种非常有效的方式处理这个长宽比值。为了能用整数来表示高h h和宽和宽w w而不降低精而不降低精确性,这里必须用很小的单位。在确性,这里必须用很小的单位。在Turbo CTurbo C中这一单位是象素高的万
11、分之一中这一单位是象素高的万分之一;换句话换句话说,说,每个象素的高度是一万个单位。我们把这种单位称为每个象素的高度是一万个单位。我们把这种单位称为“微元微元”。现在若想得到。现在若想得到一个象素的宽和高是多少微元,可通过如下调用来得到:一个象素的宽和高是多少微元,可通过如下调用来得到:getaspectratio(&h,&w);getaspectratio(&h,&w);这里这里w w和和h h是整型变量,分别表示象素的以微元为单位的宽和高。此调用执行后,得到:是整型变量,分别表示象素的以微元为单位的宽和高。此调用执行后,得到:h=10000 h=10000 w 10000(w 10000(
12、除除VGAVGA模式外,其余模式下模式外,其余模式下w w都小于都小于10000)10000)可以用可以用w:hw:h来计算屏幕的长宽比。来计算屏幕的长宽比。本讲稿第七页,共十六页例例2 23 3画一个正方形画一个正方形(正方形左上角点在象素坐标正方形左上角点在象素坐标50,5050,50处处)。其高。其高H H为为100100个象素,依照上面的定个象素,依照上面的定义,我们得到其高相当于义,我们得到其高相当于H*hH*h个微元,其宽也应是个微元,其宽也应是H*hH*h个微元,即相当于水平方向个微元,即相当于水平方向W=H*h/wW=H*h/w个象素。个象素。例程在不同的显示适配器上都能显示出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 一个简单的交互式图形软件精选文档 一个 简单 交互式 图形 软件 精选 文档
限制150内