c语言高级编程技术教程 图形显示方式与鼠标输入
c语言高级编程技术教程 图形显示方式和鼠标输入
图形显示方式和鼠标输入
问题的提出编写程序,使用鼠标进行如下操作:按住鼠标器的任意键并移动,十字光
标将随鼠标而移动,根据按键的不同采用不同的形状来画出相应的移动轨迹:当仅按下左键
时,用圆圈;仅按下右键时,用矩形;其它按键情况用线条。
分析在这个问题中我们看到输入的操作已不再是通过键盘,而是用鼠标。而且我们还要
响应鼠标的具体操作,在屏幕上画出点、矩形、圆等图形。
解答要解决这一编程问题,将涉及两方面的内容:一是关于程序设计中较难且又最吸引
人的部分--计算机图形程序设计,即图形方式(另外一种显示器显示方式)的知识;二是
关于鼠标的知识。下面将对它们做具体的解释。
2.1图形显示
图形方式和文本方式不同,我们可以在这种方式下画图,它的显示单位是象素。如同近
看电视的画面一样,显示器显示的图形也是由一些圆点组成(其亮度、颜色不同),这些点称
为象素(或称象点)。满屏显示象素多少,则决定了显示的分辨率高低,可以看出象素越小(或
个数越多),则显示的分辨率越高。象素在屏幕上的位置则可由其所在的x,y坐标来决定。
显示屏的图形坐标系统就象一个倒置的直角坐标系(如图3-6所示):定义屏幕的左上角为
原点,正x轴右延伸,正y轴向下延伸,即x和y坐标值均为非负整数,但其最大值则由显
示器的类型和显示方式来确定,也就是说,显示的象素大小可以通过设置不同的显示方式来
改变。例如在图3-6(a)所示的显示方式下,x,y最大坐标是(639,399),即满屏显示的象素
个数为640×400。3-6(b)示出了不同位置象素的坐标,其最大的x,y值(即行和列值)由程序
设置的显示方式来决定。我们称这种显示坐标为屏幕显示的物理坐标或绝对坐标,以便和图
视窗口(图视口)坐标相区别。图视窗口是指在物理坐标区间又开辟一个或多个区间,在这些
区间又可定义一个相对坐标系统,以后画图均可在此区间进行,以相对坐标来定义位置。如
在图3-6(a)所示的显示方式下,当定义了一个左上角坐标为(200,50),右下角坐标为(400,
150)的一个区域为图视口,则以后处理图形时,就以其左上角为坐标原点(0,0),右下角为
坐标(200,100)的坐标系来定位图形上各点位置。
Turbo C为用户提供了一个功能很强的画图软件库,它又称为Borland图形接口(BGI),
它包括图形库文件(graphics.lib),图形头文件(graphics.h)和许多图形显示器(图形终端)的驱动
程序(如CGA.BGI、EGAVGA.BGI等)。还有一些字符集的字体驱动程序(如goth.chr黑体字
符集等)。编写图形程序时用到的一些图形库函数均在graphics.lib中,执行这些函数时,所
需的有关信息(如宏定义等)则包含在graphics.h头文件中。因此用户在自己的画图源程序中
必须包括graphics.h头文件,在进行目标程序连接时,要将graphics.lib连接到自己的目标程
序中去。
由于计算机画图涉及到显示器和驱动它们工作的图形适配器(卡)等许多硬件知识,因而
有必要简单地介绍一下。
2.1.1图形显示器与适配器
计算机中要显示的字符和图形均以数字形式存储在存储器中,而显示器接收的应是模拟
信号。插在PC微机插槽中的图形卡(即适配器或显卡),其作用就是将要显示的字符和图形
以数字形式存储在卡上的视频存储器VRAM中,再将其变成视频模拟信号送往相应适配的
显示器进行显示,也即适配器在计算机主机和显示器之间起到了信息转换和视频发送作用,
一般PC机中适配器、主机、显示器之间的关系如图3-7所示。
由于计算机配有的显示器种类不同,因而适配器种类不同,而且不同适配器又可支持不
同的分辨率显示方式、文本显示方式和颜色设置。表3-4提供了Turbo C支持的各种显示器
表3-4 Turbo C支持的适配器和图形模式
适配器Driver模式Mode分辨率
颜色数
标识符
CGA EGA EGA64 EGAMONO VGA MCGA HREC ATT400 PC3270 IBM8514 0
1 2
3 4
0 1
0 1
0 0
1 2
0 1
2 3
4 5
0 0
1 2
3 4
5 0
0 1
320×200 320×200 320×200 320×200 640×200 640×200 640×350 640×200 640×350 640×350 640×200 640×350 640×480 320×200 320×200 320×200 320×200 640×200 640×480 720×348 320×200 320×200 320×200 320×200 640×200 640×400 720×350 640×480