第二章c语言图形时程序设计基础
西安工程大学数学系 西安理工大学数学系--计算机图形学Computer Graphics 计算机图形学是一门实践性很强的课程。通过程序设计来完成图形的绘制,对深刻理解课程的内容和相关概念非常重要。 程序设计语言是进行计算机绘图的基础,现在大多数高级语言都具有基本绘图功能。 本章主要介绍用C语言进行图形程序设计的基本方法和C语言的图形功能,使大家对C语言的图形应用有一个较深刻的理解。WIN-TC 3.1、屏幕设置 我们在屏幕上进行绘制图形,一般要按以下几个步骤执行: (1)把屏幕设置为图形模式; (2)选择背景与显示实体的颜色; (3)计算图形显示坐标; (4)调用绘图语句绘制实体 字符坐标系是以屏幕的左上角为坐标原点,水平方向为 X轴,垂直方向为Y轴,如下图-1所示: (1)BW40:黑白40列方式。显示25行文本,其中每行40个字符,以黑白两色显示。 (2)C40:彩色40列方式。可显示40列25行彩色字符。 (3)BW80:黑白80列方式。可显示80列25行字符。 (4)C80:彩色80列25行显示方式。 (5)MONO:单色80列25行显示方式。 (6)C4350:一种特殊的彩色文本方式,适和EGA和VGA两种适配器。若用EGA适配器,显示80列43行;若用VGA适配器,则显示80列50行。 在不同的显示模式下,屏幕所显示的字符数量也不一样。 X方向一般为40列或80列,Y方向一般为25行,但EGA和VGA适配器可达43行或50行。 在文本模式下,屏幕最多可显示80X50=4000个字符,至少可显示40X25=1000个字符。显示字符越多,每个字符尺寸越小,反之越大 。 显示模式不同,屏幕坐标的构成也不相同。比如: (1)在BW40方式下,最大坐标位置为(25,40); (2)在C4350方式下,最大坐标位置为(50,80); 如右图所示 1.屏幕由许多像素点组成; 2.图形的显示效果取决于分辨率的高低; 由于屏幕的分辨率不同,水平方向和垂直方向的点数也不一样,从而点坐标系的Max x 、 Max y 数值也不同。 在C程序中,坐标数据可以用两种形式给出:一种是绝对坐标,另一种是相对坐标。 (1)绝对坐标的参考点是坐标的原点(0,0),x和y只能取规定范围(0, Max x )和(0, Max y )内的正整数; (2)相对坐标是相对“当前点”的坐标,其坐标的参考点是当前点。在相对坐标中, x和y的取值是相对当前点在x方向和y方向上的增量,故x和y可以为正整数,也可以为负整数。 C提供了十分丰富的图形库函数,共有70多个,所有图形函数的原型均在头文件“graphics.h”中定义。所以,在任何使用图形函数的程序中,都要求其头部包含文件graphics.h,即在程序文件的开头写上文件包含命令: #include 同时将集成开发环境option/Linker中的graphics.lib选项设置为”on”。 下面我们介绍:图形系统的初始化、图形系统的关闭、 图形模式控制。 图形系统初始化首先要调用initgraph()函数,它通过从磁盘上装入一个图形驱动程序来初始化图形系统,并将系统设置为图形模式。 [功能] 将图形驱动软件装入内存,使屏幕显示适配器设置为图形模式,即图形系统初始化; [说明] 1. gdriver是一个整型值,用来指定要装入的图形驱动程序;该值在头文件graphics.h中定义; 2. gmode是一个整型值,用来设置图形显示模式。图形显示模式决定了显示的分辨率和显示的颜色的多少等; 3. path是一个字符串,用来指明图形驱动程序所在的路径. (1)已知显示器类型的图形系统初始化。 如果已经知道所用图形显示器的种类和要使用的图形模式 则图形系统的初始化可用下面程序,例如: bar3d(10,20,50,80,0,0); /*画一条形图*/ getch(); /*等待按一键结束*/ closegraph(); /*关闭图形系统,回到文本模式*/ } 程序注释: bar3d()函数 [格式]: void bar3d(int x1,int y1,int x2,int y2, int depth,int topflag); [功能]