一个简单交互式图形软件.pptVIP

  • 2
  • 0
  • 约5.47千字
  • 约 16页
  • 2019-11-06 发布于广东
  • 举报
计算机图形学 中南大学国土与测绘系 主讲: 向南平 教授 E-mail: harry.xiang@126.com 第2章 一个简单的交互式图形软件 2.1 Turbo C的图形函数 2.2 Turbo C的图形初始化 2.3 一个简单交互式图形软件 2.1 Turbo C的图形函数 Turbo C的两类与图形相关的函数有两类 1) 字符屏幕函数 基本输入输出函数 屏幕操作函数 属性控制函数 状态查询函数 2) 图形函数 屏幕显示适配器模式控制函数 基本图形功能函数 字符输出函数 屏幕状态函数 屏幕操作函数 2.2 Turbo C的图形初始化 2.2.1 初始化函数 在图形函数使用之前,必须把屏幕显示适配器设置为某一种图形模式。在未经定义的情况下,绝大多数计算机系统都使用80列字符模式。由于这不是图形模式,Turbo C的图形函数不能工作。若要将显示适配器设置成图形方式,必须先用initgraph()函数初始化屏幕。其原型如下: void far initgraph(int *graphdriver, int *graphgmode, char *path); initgraph()函数将一个图形驱动程序装入内存,并将系统设置成图形模式。如果没有装入图形驱动软件,图形函数将不能操作。 graphdriver是一个整数,它指定所用的图形驱动程序。用户可以用枚举常量对它赋值,这些常量定义在graphics.h中。 *graphmode是一个整数,它说明初始化图形模式。 示例2-1: 使用图形初始化函数将显示适配器设置为VGA高分辨率图形模式。 #include graphics.h main() { int graphdriver, graphmode; graphdriver = VGA; /* 选 VGA 驱动器 */ graphmode = VGAHI; /* 选 VGA 高分辨率图形模式 */ initgraph(graphdriver, graphmode, C:\\tc); /* 图形初始化 */ bar3d(200, 200, 400, 350, 50, 1); /* 画一长方体 */ getch(); closegraph(); /* 关闭图形模式 */ } 大多数情况下编程者并不知道所用的图形显示适配器类型,或者需要编写在不同图形模式下均能运行的图形程序,Turbo C 提供了一个自动检测显示器硬件的函数, 其函数原型为: void far detectgraph(int *graphdriver, *graphmode); 示例2-2: 自动进行硬件测试后进行图形初始化程序 #include graphics.h main() { int graphdriver, graphmode; detectgraph(graphdriver, graphmode); /* 自动测试硬件 */ printf(Detect graphics driver is %d, mode is %d\n, graphdriver, graphmode); /* 输出测试结果 */ getch(); initgraph(graphdriver, graphmode, “C:\\tc”);/* 根据测试结果初始化屏幕*/ bar3d(50, 50, 250, 150, 20, 1); getch(); closegraph(); } 2.2.2 屏幕长宽比确定 Turbo C支持各种不同的视屏适配器和显示模式。 每一种都带有它自己的彩色范围、分辨率和存储页面。每一种图形模式都有其特定的长宽比,即:基于每一象素的宽与高之间的比率。当我们试图在屏幕上绘制一个特定大小和形状的图形时,这个比率是很重要的。例如,如果用CGA 320*200模式,每一象素的高约为宽的两倍。 因此,如果我们画4*4的像素块,将得不到屏幕上的正方形。很显然,当我们要想画一个真正的正方形而不是长方形时,就必须调整模式的高宽比。 getaspectratio()函数就是为此而设的。我们将在不使用浮点数的情况下,以一种非常有效的方式处理这个长宽比值。为了能用整数来表示高h和宽w而不降低精确性,这里必须用很小的单位。在Turbo C中这一单位是象素高的万分之一; 换句话说,每个象素的高度是一万个单位。我们把这种单位称为“微元”。现在若想得到一个象素的宽和高是多

文档评论(0)

1亿VIP精品文档

相关文档