第 6章 交互式技术
与用户接口
内容摘要
?在计算机图形学中,交互技术与用户接口
是必不可少的部分。图形与交互式技术的
完美结合,可以为用户提供简单、方便、
美观的操作界面,即用户接口。由于交互
技术在计算机图形学中的普遍使用和重要
性,人们通常也将计算机图形学称为交互
式计算机图形学。随着计算机软、硬件技
术的发展,交互技术和用户接口技术已从
应用程序中独立出来,提出了用户接口管
理系统 (UIMS:User Interface Management
System)的新概念,并逐渐形成形影的学科。
目前,许多面向对象的程序语言都提供了
对交互式技术的支持。
内容摘要
用户接口是人与计算机交互的界面,人
-机交互方式从问答方式、菜单交互方式发
展到现在的图形交互方式、窗口管理系统、
图标以及其它丰富多彩的图形界面,已成
为流行的人 -机交互环境。本章主要内容包
括:
用户接口的常用形式;
交互式设备、交互式任务和交互技术;
交互系统的概念和方法
重点在于了解交互任务和方式,以及交
互技术的实现原理。
6.1 用户接口的常用形式
用户接口通常由图形软件来实现。在各种应
用程序中,实现用户接口有三种形式,即子程序
库、专用语言和交互式命令。
? 1.子程序库
这种形式的基本思想是选择一种合适的高级
程序设计语言,如 C,C++,Java等作为主语言,
用此主语言扩展一系列的过程与函数用以实现有
关的图形设计和处理。在此情况下,应用程序包
括两部分:一是主语言的程序;二是扩展的过程
或函数调用语句。
? 常用的子程序库有 ISO公布的图形核心系统
GKS,GKS-3D,PHIGS,PHIGS+等,美国 SGI
公司推出的图形程序库 GL和 OpenGL。这类子程
序库通常提供多种主语言的联编形式,其功能概
括如下:
? (1)基本图形的生成,包括点、线、圆弧、字符和自由
曲线等;
? (2)坐标变换,支持平移、旋转、比例、对称、投影和
裁剪等操作;
? (3)设置图形属性和显示方式。图形属性包括线型、线
宽、填充图案、字体和光标,显示方式包括颜色、饱和度、
亮度以及明暗效应等形式。
? (4)输入输出子程序:启动不同的输入输出设备,并对
相应的事件队列进行处理;
? (5)真实图形的处理:包括选择消除隐藏线(面),不
同的光照模型,生成真实图形的不同算法等;
? (6)用户界面的设计:包括窗口设计、菜单设计、对话
框、列表框等交互界面。
用子程序库设计用户接口,使用方便、
便于扩充,便于在用户自己编写的程序代
码中加入子程序库中的函数,可以充分利
用高级程序设计语言本身具有的功能,实
现用户希望产生的图形和交互处理。但是,
这种方式实现用户界面需要不断地编写、
调试和修改源程序,不形象直观。子程序
库函数的调用格式要随所用主语言而定,
对子程序库的使用应遵循相应主语言对子
程序或函数的调用约定。
? 2.专用语言
图形专用语言是专门用于图形处理的程序设
计语言,常见的形式有两种:一是解释执行,即
扫描专用语言的每一条语句,解释并执行。如
Visual BASIC中的 Color,Line等语句。二是编译
型语言,经编译、装配链接后生成可执行代码。
Adobe公司推出的页面描述语言( PostScript,
简称 PS语言)是一个优秀的图形专用语言。它是
一种解释型的语言,能对正文、图形和图像所产
生的任意组合进行描述,并能支持包括条件执行、
过程和变量在内的许多程序设计语言的特征。 PS
含有数百条功能很强的命令,并能对复杂的页面
进行高效而精确的描述。目前,PS语言不仅在照
排系统、出版系统中有广泛的应用,而且在图形
处理、多媒体技术领域都有良好的应用前景。
? 3.交互命令
交互反映了人与计算机运行的程序之
间传递信息的形式。如在 AUTOCAD中的
Command:输入交互式图形命令进行绘图。
交互式用户接口就是基于某种模型,实现
用户所需要的输入、选择、拾取和增、删、
改操作。
交互式用户接口是用户与应用系统的核
心功能模块之间的界面,它负责接收用户
向系统输入的操作命令及参数,经检验无
误后调出相应的应用程序模块执行之,执
行的结果在以一定的形式通知用户。
交互处理中最常用的增、删、改操作,
另外还有询问、设置等,操作的对象包括
图形、属性以及字符串说明。定位和拾取
是增、删、改操作的基础。增操作一般对
应输出,其动作包括:设定为点、选择输
出内容、输入有关参数、输出存储结果。
删操作对应的动作有:拾取删除对象、确
认拾取的对象、删除对象、修改存储结构
中的内容。改操作应执行的内容是:拾取
修改对象、确认拾取的对象、输入修改参
数、输出修改结果,经确认后存储结果。
6.2 交互设备、交互任务和交互技术
? 6.2.1 交互设备
交互设备通常是计算机的外部设备,它
是实现交互技术、完成交互任务的基础。从
逻辑上分,交互设备分为定位、键盘、选择、
取值和拾取五种设备。不同的交互任务可以
选择不同的交互设备来完成。
? 1.定位设备
定位设备分为绝对坐标或相对坐标、直接或间
接、离散或连续三类。如数字化板、触摸屏是绝对
坐标设备,它们都有绝对原点,定位坐标是相对原
点来确定的。而像鼠标器、跟踪球、操纵杆等设备
没有绝对原点,定位坐标是相对前一点的位置来确
定的。相对坐标设备可指定的范围可以任意大。直
接设备像触摸屏,用户可直接用手指指点屏幕来实
现定位。间接设备像鼠标器,用户移动屏幕上的游
标,并不是直接在屏幕上操作。连续设备是一种把
手的连续运动变成游标的连续运动,向鼠标器、操
纵杆、数字化板等设备,而键控游标即为离散设备。
连续设备与离散设备相比使用自然、快捷、方便,
同时离散设备难于精确定位。
? 2.键盘设备
键盘是应用最早的交互设备,它同时具有定位、
选择、取值等多种功能,它主要是通过键盘输入相
应的命令和参数,或直接通过键盘命令(如
Ctrl,Shift,Ins,Del等)来完成交互式任务。
? 3.取数设备
某些取数设备是有界的,像一把尺子或一个度
盘,当尺子或度盘上的游标到达用户需要的数值后,
按一下鼠标器确认键或回车键,即可把此数输入到
数据域内。一般是把尺子的一端作为初始值,另一
端为终止值。
? 4.选择设备
功能键是最常用的选择设备,按下某一个功能
键即可实现用户希望的某个功能。键盘上的每一个
键都可经过应用程序的重新定义而变为功能键。通
过游标选择指定的项或图,其实质是通过游标的位
置实现选择,它不是选择设备。
? 5.语音识别器
这是一种目前还没有普遍使用但很有发展前途
的交互设备,这也是一种综合的交互设备,用它可
进行选择、取数和定位。但由于对不同人的发音识
别精度还很低,故语音识别器的正确率还不高,离
实用化还有一定距离。
? 6.三维交互设备
三维交互设备现在还不成熟,从原理上
看,不少二维交互设备,如操纵杆在旋转的
同时允许其可以移动,则可以形成三维效果。
但真正实用的三维交互设备目前已有两种,
一是基于三维传感器的三维坐标测量仪,二
是数据手套。用数据手套可以记录手指的位
置和方向以及手指的运动轨迹,这为构造真
正的三维交互式图形系统及虚拟现实环境奠
定了基础。
6.2.2 基本交互任务和交互技术
交互技术是用户用交互设备把信息输入进计算
机的不同方式,而交互任务是用户输入到计算机的
一个单元信息。最基本的交互任务有四种,即:定
位、字串、选择、取数。对于一个给定的交互任务,
可用多种不同的交互技术来实现,如一个选择任务
可通过鼠标在菜单中选一项,也可用键盘输入选择
项的名字,还可以通过按一个功能键实现选择。类
似的情况是一种交互设备可用于不同的交互任务,
如鼠标既可以用于定位,也可以用于选择。因此,
交互任务是图形系统所要完成的目标,而交互技术
则是完成交互任务的手段,并且交互技术的实现在
很大程度上依赖于交互设备及其支撑环境。
交互式图形系统的基本任务包括:定位、选择、
文字输入和数值输入。下面结合各个基本交互任务,
介绍一些常用的交互技术。
? 1.定位
用来给应用程序指定位置坐标。实现定
位的交互技术通常有两种:一是把屏幕上的
光标移到要确定点,再按下鼠标确认键;再
就是用键盘直接输入点的坐标。定位设备可
以是直接的(如光笔)或间接的(如数字化
板、鼠标器、游戏棒),也可以是连续的
(如鼠标器)或离散的(如光标控制键),
也可以是绝对的(如数字化板)或相对的
(如鼠标器)。另外,用键盘上的上、下、
左、右键可以移动光标。还可以将这些技术
混合在一起,以便于精确的的定位。
在定位技术中,需要的考虑的因素有:( 1)
坐标系统。在交互式图形系统中,一般有三种坐标
系,即屏幕坐标系、用户坐标系和物体坐标系。
( 2)分辨率。定位任务中所要求的分辨率随应用
程序的不同而不同。台板、鼠标器等定位设备的分
辨率至少可以和分辨率为 500~2000的显示器一样高。
( 3)网格技术。在许多定位任务中,一个重要的
视觉辅助工具就是在屏幕工作区中较低的亮度或较
淡的颜色显示出网格作为背景,以帮助调整定位的
位置,使定位点落在网格上。要实现网格化,应用
程序可以在定位点靠近某个网格点时,就将定位器
的坐标截断到这个最近的网格点上,如 AUTOCAD
中的 grid和 Snap命令。
( 4)反馈技术。不同定位方式需要不同的反馈
形式,有两类定位方式:空间定位方式和数
值定位方式。对于空间定位方式,例如,圆
心定位,用户希望当鼠标靠近圆心时,应用
程序能自动反馈出圆心位置。而在数值定位
方式中,用户希望定位到( x,y)点,因此希
望得到的反馈当然就是当前光标点的位置坐
标。图 6.1是另一个数值反馈的例子,当用鼠
标交互式画矩形时,自动反馈显示出矩形的
宽和高度。( 6)方向性。在用鼠标器定位时,
可以配合键盘上的 Shift键,屏幕上的光标只
能做水平或垂直移动。
1.75
1.00
图 6.1 数值反馈
2.选择
选择任务是指从一个被选集中挑选出一个元素
来。在交互式图形学中,选择绘图对象是为了对这
些对象进行修改、删除等操作。常用的选择技术有
命令选择、操作数选择、属性选择和对象选择等。
选择集一般分为定长和变长两种。命令、属性和对
象类型的选择集一般是定长的,而在作图过程中的
绘图对象经常变化,所以绘图对象的选择属于变长
集。
适合固定集的选择技术包括:
? (1)指名技术:用键盘键入集合元素的名字、名
字的缩写或元素的代码等选择一个元素或对象;
? (2)功能键:使用与集合元素相对应的功能键;
? (3)菜单技术:在菜单中选择菜单项;
? (4)模式识别:通过模式识别技术来选择符合要
求的对象;
适合变长集的选择技术包括指名和拾取两种技术。
? ( 1) 用指名方式选择对象:要求用户知道各种对
象的名字,特别是在屏幕上显示对象很多、互相遮
挡重叠的情况时,用指名方式选择对象比拾取更快
和准确。另外,可以使用匹配符 *和?进行多个选择。
指名方式的最佳反馈形式是在键入每一个字母
后,立即显示所有能与当前已键入的字串匹配的对
象名。这有两个好处,一是可以帮助用户回忆起对
象的全名,而是在没有二义性的情况下,即只有一
个对象名与已键入的字串匹配时,用户就可以停止
键入剩下的字符了。例如,在对象集
{polyline1,polyline2,polygon,cycle}
中,用户希望选择对象 polygon。当输入 p时,反馈
显示 3个元素 polyline1,polyline2,polygon。直到键
入 polyg后,只显示唯一的元素 polygon,这时用户
就无需再继续输入剩下的字符了,确认后就唯一地
选择了 polygon对象。
? ( 2)拾取对象:将屏幕上的光标移动到被选择对
象上,再按下鼠标左键,即指示要拾取这个对象。
一般被拾取的对象会以不同的颜色显示,已表示被
选中。
可以结合实验课程,熟悉 AUTOCAD中的指名
和拾取绘图对象的方法。
? 3.文本输入
文本输入任务是指应用程序输入一个字符串。
如键入一个插图说明、一个标注等。文本输入最基
本的技术就是标准键盘,其次是菜单选择字符串和
语音识别等。
? 4.定量输入
定量输入任务是指在某个最小值和最大值之间
指定一个数值,例如温度、时间、透明度等数值量
的输入。典型的交互式定量技术有:① 键盘输入数
值;② 调节电位器的阻值产生相应的数值;③ 用
上下翻转数字的计数器选择数值;④ 用光标移动屏
幕上的标度盘或刻度尺上的指针来确定数值。图 6.2
是常用的交互式定量输入的示例。
交互式输入数值时,反馈的形式非常重要。一
般是提供数字反馈,这在用户知道要输入的数值时
很有用。另一形式的反馈是可度盘或标尺上的指针,
指示数值的大概位置。
0
90
180
270
45
( a) ( b)
7
6
5
4
3
2
1
(c) (d)
图 6.2 交互式定量输入
? 5.定向技术
在指定的坐标系中确定形体的方向,此
时需要有应用程序来确定其反馈类型、自由
度和精度。
? 6.定路经技术
这是一系列定位和定向任务的结合,与
时间、空间有关。
6.2.3 组合交互任务和技术
组合交互任务是由上述基本的交互任务
组合而成的,主要有三种组合交互任务:①
对话框:用来设定多个参数;② 构造:用来
构造需要两个或多个位置的形体;③ 操作:
修改已有的几何形体的形状,调整物体之间
的相对位置。
? 1.对话框
在交互过程中经常需要从一个选择集中选择多
个元素,如字符属性有楷体、斜体、有粗体、细体,
有空心字、实心体,有大小、对齐方式等。当弹出
一张字符属性对话框后,如图 6.3所示。用户可以从
中选择多项,还可以在某些项输入用户希望的字符
或数字。有些应用还希望从多个选择集中确定一组
参数,如上面的字符属性中希望改变字符的颜色,
这时还需要弹出一个色彩选择对话框,从中挑出用
户希望的颜色。还有些应用要求对话框行、列设置
滚动条。
对话框是用户与系统进行信息交流的窗口。当
系统执行的某个命令需要更多的信息或数据时,就
弹出一个对话框,向用户提问,由用户填写或选择
对话框中的各项,作为回答。
对话框中常用的对象包括:
? 列表框:列表框可以选择多个选项,提供滚动条,从中只能
选择一项;
? 下拉式列表:只能显示一个带下箭头的长方框,选择时可以
通过按下箭头拉开列表以供选择。在下拉式列表中也只能选
择一项。
? 单选项:多个选项前面都有一个圆标识,每次只能选择其中
的一项。被选中的选项前面的圆中间包含一个黑点。
? 复选项:多个选项前面都有一个方框标识,可以从中选择多
个选项,每次选中的选项前面的标识方框中包含一个差号。
? 文字输入框:用于输入文本信息或数字。当光标移入输入框
时,光标变成闪烁的竖条,等待用户输入。
? 命令按钮:命令按钮用于启动一个可以执行的程序代码。一
般包括“确认”或,OK”,“取消”或,Cancel”,后跟省略号
( … )的命令按钮将打开另一个对话框。
图 6.3 列表框示例图
下拉列表框
复选框
列表框
命令按钮
? 2.构造技术
我们把作图看成一个构造的过程,这个过程实
际上是选择作图命令和指定一系列定位点的过程。
例如在选择画直线命令后,在作图区先后指定两个
点就可以在这两个点之间画出一条直线。常用的构
造技术包括橡皮筋技术、约束技术等。
橡皮筋技术通常是在绘图过程中,可以使操作
者能看到构造绘图的中间效果,并能够不断调整其
位置和效果。例如,用橡皮筋技术画直线段,首先
用鼠标选择直线段的起点位置,然后移动鼠标,这
时就在起点和鼠标当前点之间有一条连线,鼠标移
动到不同位置,连线就连到什么位置,就像橡皮筋
一样随光标移动。按下确认键,定下终点后,这条
线段就确定下来了。利用橡皮筋技术可以实现用鼠
标交互式画矩形、圆、椭圆、折线和多边性等图形。
约束技术分为水平约束、垂直约束和引
力场约束三种。水平约束和垂直约束是为了
画出水平和垂直的直线段。通过其它辅助键
的配合(如 Shift键),光标只能在水平和垂
直方向移动,因此可以画出精确的水平线和
垂直线。引力场约束技术可以帮助用户把光
标点精确地定位在某个端点或直线上。引力
场是一种想象的约束场,一旦光标进入这个
范围,它就被吸引到某个特殊点或直线上。
例如,在选择圆心点、拾取直线图形等操作
中,常用到引力场约束技术。
? 3.动态操作
动态操作包括:图形对象的拖动、旋转、缩放
和形变等;
选择拖动命令后,首先在作图区用定位设备
(如鼠标)拾取某个图形对象,再按住键移动光标,
则这个被选中的图形对象就会随着光标的移动而移
动。放开键后,图像对象就固定下来了。
选择旋转命令后,首先选择要旋转的图形对象,
选中的图形对象中心将显示一个图标代表旋转的中
心。用光标先将这个图标拖到实际的旋转中心,再
按住定位器的键移动光标,图形对象就会围绕旋转
中心随光标的移动而旋转。
动态缩放操作与旋转操作大致相同,不同的是
该操作需要确定缩放中心位置,移动光标,图形对
象将以这个缩放中心为基准进行缩小或放大。
形变技术通常采用操作柄技术。操作柄在图
形对象被拾取后显示出来,通常用小方块表示。
如图 6.4所示。
(a) (b)
图 6.4 操作柄技术的形变
在多边形各顶点上有一个操作柄,当拖
动某个操作柄到新的定位点时,相邻两条边
变成橡皮筋,以相邻两个端点为固定点随光
标的移动而被拉伸。如图 6.4所示,( a)为
选中图形对象后显示的操作柄,( b)图为拖
动一个操作柄后的橡皮筋显示所产生的形变。
6.2.4 拾取图形
拾取图形是交互式用户接口重要的任务
之一。在交互式图形系统的增、删、改操作
中,都是以拾取图形、或以拾取图形的某一
位置为基础的。从屏幕上拾取一个图形,其
直观现象是该图形变颜色、或闪烁、或增亮,
其实际意义是要在存储用户图形的数据结构
中找到存放该图形的几何参数及其属性的地
址,以便对该图形作进一步的操作,如修改
其几何参数、连接关系或某些属性。
? 1.点拾取
对于屏幕上的一点 P1(x1,y1),该点的显示领域
是以该点为圆心,r为半径的一个圆形区域,r是交
互系统设定的领域精度。如果定位器定位点
P0(x0,y0),且
( x1-x0) 2+( y1,y0) 2≤r2
说明定位点 P0在 P1点的显示领域内,即可拾取 P1点。
? 2.字符集的拾取
依次判断符号集中的每个符号参考点的显示领
域是否包含了拾取点,如该图素的某个符号参考点
满足点拾取条件,则对该图素拾取成功。
? 3.直线段的拾取 P1P2royx图 6.5 直线段的拾取领

设直线段的端点为 P1(x1,y1)和 P2(x2,y2),该
线段的显示领域为一个矩形区域,如图 6.5所示。
P1P2的直线方程为:
(y1- y2) x-( x1- x2) y- x1 (y1- y2)+ y1 (x1- x2) =0
直线的斜率为
y2- y1
K=,( x2- x1≠0)
x2- x1
当定位器定位点 P0落在该矩形内,则表示
直线段拾取成功。
? 4.折线集的拾取
依次判断每条直线段的显示领域是否包
含拾取点,如该图素的某一条线段满足拾取
条件,则对该图素拾取成功。
? 5.曲线的拾取
曲线在显示时输出时,已离散成折线集,
故曲线拾取算法与折线集拾取算法类似。
? 6.字符串的拾取
需要依次判断每个字符的显示领域是否
包含了拾取点。
6.3 输入控制
图形软件包一般向用户提供三种基本的输入控
制方式:请求方式、采样方式和事件驱动方式。可
以用如下的命令设置一个输入设备的输入控制方式:
set_locator_mode(ws,device_code,input_mode)
其中,ws是工作站的标识号,device_code是
用来指定被采用的物理定位设备的设备码,
input_mode对应请求、取样和事件三种输入控制方
式之一。
6.3.1 请求输入方式
请求输入方式按照以下步骤工作:
( 1)应用程序向输入设备发出输入请求命令。例如,希望从
定位器中获得一个定位坐标时,可用如下请求命令:
request_locator(ws,device_code,x,y)
该命令是把定位器设置成请求输入控制方式,其中 x,y用来
存储一个点的坐标值。
( 2)等待用户输入数据;
( 3)用户开始输入操作,如移动鼠标到定位点,再按确认键;
( 4)在用户输入操作完成后,应用程序得到输入数据,即定
位点的坐标( x,y)。
请求输入方式一次只能对一个输入设备进行操作,而且
只支持那些由 RS-232端口联到计算机上的老式图形终端或
其它交互设备。
6.3.2 取样输入方式
一个输入设备一旦设置成取样输入方式,立即
就可以进行数据输入,而不必等待程序中的输入语
句。例如,操纵杆设置成灾取样方式下的定位设备,
则操纵杆的当前位置坐标立即就被存储起来,如果
操纵杆的位置发生变化,就立即用当前的坐标来代
替以前的位置坐标值。设置定位设备为取样方式的
命令是:
sample_locator(ws,device_code,x,y)
取样方式允许用户同时使用多个设备。设备设
置成取样方式后,应用程序按一定的周期反复测试
输入设备,随时读取数据,所以应用程序可以对用
户的动作给出及时地反馈。这是取样方式的好处。
6.3.3 事件输入方式
在事件输入方式中,输入设备与应用程序是异
步的。应用程序先将输入设备置成事件方式,并允
许由设备输入。一旦设备是可输入的,不管应用程
序是否准备好接收数据,用户都可以在这个输入设
备上进行输入操作了。任何一个输入操作的数据都
将作为事件按其发生的次序被送到一个输入队列中。
应用程序随时可以检查这个输入队列,处理队列中
的事件,或删除队列中的事件。 有数据就处理,无
数据就等待,即应用程序和输入设备各自独立地进
行,输入设备可以随时输入数据,并保存在输入队
列中,而应用程序不断地检查输入队列,一旦有输
入数据就进行相应的处理。 事件输入方式避免了请
求方式和取样方式中存在输入数据丢失的问题。
在输入队列中的数据可按照逻辑设备类型、工作站号、
物理设备编码进行检索。在应用程序中,检索事件输入队列
可用下述命令:
await_event(time,device_class,ws,device_code)
其中,time是应用程序设置的最长等待时间。当事件队
列为空时,事件处理进程就挂起,直到最长等待时间已过或
又有一个事件进入,才恢复事件的处理。若在输入数据之前,
等待时间就已过去,则参数 device_class就返回一个空值。
当 time被赋成零或当队列为空,程序就立即返回到其它的处
理进程。
当用 await_event命令使某个设备进入事件输入控制方式,
而且事件队列为非空时,在队列的第一个事件就被传送到当
前事件记录中,对于定位器、笔划设备,在 device_class参
数中存放了它们的类型。为了从当前事件记录中检索一个输
入的数据,还需要采用一个事件输入方式命令,其格式类似
于请求、取样方式的命令,但在命令中不需要有工作站和设
备码参数,因为在数据记录中已有这些参数。用户可用下述
命令从当前事件中得到一个定位数据:
get_locator(x,y)
下面是一段程序用 await_event,get_locator命
令从 1 号工作站的图形输入板上输入一个点集,并
用直线段连接这些点。
Set_stroke_mode(1,2,event);
If (device_class==stroke) {
Await_event(60,device_class,ws,device_code); }
get_stroke(n,xa,ya);
polyline(n,xa,ya);
这里的 IF条件循环是为了把从其它设备来的在
队列中的数据滤掉。设置等待时间为 1分钟,以保
证输入数据接收完毕。如果在事件方式下只有这台
图形输入板处于激活状态,那么这个 IF条件循环就
不必要了。
在事件方式下,同时可应用多台输入设备以便
加快交互处理。下面的程序是从键盘输入属性和图
形输入板输入数据画折线。
set_polyline_index(1);
set_stroke_mode(1,2,event); /*把图形输入板设置成
笔划设备 */
set_choice_mode(1,7,event); /*把键盘设置成选择设
备 */
do {
await_event(60,device_class,ws,device_code);
if (device_class ==choice) then {
get_choice(option);
set_polyline_index(option); }
else
if (device_class == stroke) then {
get_stroke(n,xa,ya);
polyline(n,xa,ya); }
} while(device_class)
在此例程序中,通过将 device_class设置成空
来终止此过程。若等待 1分钟,还没有新事件进入
事件队列,即会发生终止的情况。
6.4 用户接口的设计
交互式图形系统重要的是为操作者提供方便的
用户接口。用户接口的设计目标包括:( 1) 提高
学习速度,即操作者熟练掌握图形交互系统的使用
方法所花费的时间。( 2)提高使用速度,即提供
高效的交互式技术,如橡皮筋技术、菜单技术、快
捷键技术等。( 3)降低操作失误率。操作失误率
是指每次交互操作的平均失误率。( 4)增强记忆,
可以采用对话框、信息反馈等技术提示命令的参数
和形式。( 5)增强对潜在用户的吸引力,这是抢
占市场方面的一个目标。 构造一个交互式系统涉及
到用户接口的表现形式、工作方式、用户命令集的
描述、人 -机对话序列的设计、用户接口的描述、交
互式过程的驱动方式等内容。本节对这些内容进行
讨论。
6.4.1 用户接口的表现形式
用户接口的表现形式包括屏幕的布局、显示内
容、符号选用、网格划分、颜色选择等多方面的内
容,每个方面都有一些经验和准则可以参考,按照
一定的准则去设计表现形式,可以比较容易地建立
和维护数据的表示与显示的一致性。
1.屏幕的划分
显示屏幕又不同的大小、格式和分辨率,要合
理、充分地利用屏幕,必须对屏幕作适当的划分,
一般包括菜单栏、工具栏、绘图区、属性区、命令
提示区等。绘图区尽可能大,其它内容要使用方便
合理。屏幕的划分有对称型和不对称型两种。交互
式图形系统常采用不对称布局方式。图 6.6是
Autocad的用户界面。
图 6.6 autocad的用户界面
2.字型的选用
字型选用得好可以给界面带来生气。无论是英
文还是中文都可以利用不同的字体,建立起一种层
次关系,标题、子标题常用黑体字,已达到清晰、
简单、醒目,而文本要易于阅读,大面积地使用黑
体字会降低可读性。同时,还要考虑字符的大小、
排列、对齐方式等。
3.颜色和灰度的选择
用不同的颜色和灰度表识信息、分离不同的形
体、减少错误是非常有效的。实践表明对颜色和灰
度的选择应考虑以下几个因素:( 1)避免同时使
用光谱边缘上的颜色;( 2)字符、细线、小物体
应避免用蓝色;( 3)避免仅用蓝色的饱和度来区
分颜色;( 4)老年用户需要用较强的亮度才能识
别颜色;( 5)颜色效果与周围环境的色彩有关;
( 6)避免红、绿色同时使用。
4.系统的开启
系统的开始的启动信息使用户使用系统的第一
印象。对不同的用户应有不同的开启信息,生疏的
用户要求步骤详细、提示信息丰富。熟练用户则要
求命令、提示信息简洁、出入系统迅速。
5.窗口系统
目前,个人计算机和工作站都提供了窗口系统,
大多数的应用程序也都是以窗口系统为基础。窗口
通常为矩形窗口,设计应用程序时要考虑窗口的大
小、边界、多窗口的排列、窗口的刷新等问题。窗
口及其管理系统已逐渐成为一个专门的课题,它是
将常用的交互技术融为一体的综合应用环境,包括
菜单、对话框、工具栏、图标等交互式对象。
6.菜单
菜单是一组功能、对象、数据或其它用户可选择实体的
列表。按照菜单的出现与消失方式可以分为以下几种形式:
( 1)固定式:固定式一般适用于静态菜单,它自始自终显示
在屏幕的某一固定区域,一般位于屏幕的上部,用作系统的
主菜单;
( 2)翻页式:菜单项按层次分页,进入一层菜单就像翻过一
页书;
( 3)拉帘式:用户可象拉帘子一样拉出一个个菜单;
( 4)增长式:这种菜单的显示好像是慢慢长出来似的;
( 5)弹出式:一般是按下鼠标右键,在屏幕上弹出一个菜单。
弹出式菜单一般可以放在屏幕的不同位置,因此也称为浮动
菜单。
7.图符和光标
在用户界面上使用不同的图符和光标,是用户接口更为
形象,操作更为方便。例如,用铅笔图符表示临时性的写和
画,钢笔光标表示永久性的操作,文件夹表示文档的管理,
手指图符表示定位和方向等。图符和光标常用作工具栏、快
捷键的图标( icon)。
6.4.2 用户接口的设计原则
在设计用户接口时,应遵循以下设计原则:
1.保持一致性
保持交互系统的一致性是指在设计系统的各个环节时,
应遵从统一的、简单的规则,保证不出现里外和特殊情况。
保持一致性的目的是能让用户有系统某个方面的知识推广到
其它方面,以便于用户快速学习和熟练掌握。用户接口输入
部分的一致性包括:键盘功能键,全程命令和常用命令,它
们的功能在整个系统内应当一致。输出部分的一致性包括:
使用的图符和颜色、状态信息的位置、菜单位置等。
2.提供反馈
反馈诗人 -机交互的一部分,设计用户接口时必须考虑到
各种反馈,并在程序中实现。根据设计过程中的功能设计、
顺序设计(语法)和联结设计(词法)的三个步骤,可以给
出三级反馈。设计人员必须有意识地考虑到每一级,并明确
地决定是否提供反馈,以何种形式给出反馈。
( 1)最低级的反馈。对应于联结设计,用户在
交互设备上的每个动作都应立即产生明显的反馈。
如在键盘上键入字符时应在屏幕上回显,鼠标器的
移动应对应于光标的运动。
( 2)二级反馈。对应于顺序设计,当系统接受
输入语言(命令、位置、操作对象等)中的每个词
组时,应提供反馈,被拾取的物体或被选中的菜单
项要着重显示,使用户知道他的动作已被接受。
( 3)功能级反馈。对应于功能设计,这是最有
用且最受用户欢迎的一种反馈方式。它告诉用户所
发出的命令已经执行完毕。通常是将操作结果显示
出来。在执行某个费时的操作时的操作时,要给出
某种反馈,例如进度条、百分数等,表明计算机仍
在执行中,并且使用户知道大约何时能够执行完这
个命令。
3.尽量减少失误
要尽可能地减少用户的操作失误,为此,
要注意两点:一是使系统只提供当前有效的
菜单命令,引导用户只在有效的范围内工作,
不让用户做不能做或不允许做的事;二是尽
量避免副作用,不要产生用户不期望的结果。
设计时考虑不全、与用户交流不充分往往会
产生副作用。
4.提供出错恢复机制
有四种出错时的恢复方法,即复原( Undo)、
中止( Abort)、取消( Cancel)和校正
( Correct)。
当用户错误地执行一个或多个命令,得到一个
预料之外的结果时,就需要使用“复原”命令恢复
到执行的状态。复原又分为单级复原和多级复原两
种。单级复原只恢复到上一个命令执行前的状态。
如果单级复原命令之后紧接着再执行一次“复原”
命令的话,就等于没有做恢复工作。多级复原是在
前面之行过的命令栈上进行操作。执行过的命令都
存入栈中,根据栈里存放的命令逐一作恢复工作。
对应于多级复原,还配备一个“重做( Redo)”操
作,把复原以后的状态通过“重做”再恢复过来。
中止( Abort)操作是在命令执行过程中,用户
意识到出现了失误,这是就需要“中止”命令来停
止命令的继续执行。“中止”命令也需要把系统恢
复到命令执行前的状态,相当于被中止的操作没有
执行。
取消( Cancel)是在用户为执行某个命令而输
入所需要的参数时,会突然发现自己并不想执行这
个命令,这是就需要“取消”这个命令,回到输入
前的状态。
校正( Correct)是在用户输入参数时,往往会
发现出现失误,这时用户总是希望能简单地把错误
校正过来。例如,在文本输入时出现错误,可以使
用 Backspace键来删除错误,并重新输入。
5.面向多层次用户
交互式图形系统要面向各种层次的用户,使毫
无经验的新手、经验不多的用户,直到熟练用户,
都能找到适合自己的交互手段。使系统能容纳多层
次用户的方法包括:提供加速键,增加提示信息、
提供帮助信息和可扩展功能,以及隐藏复杂功能等。
6.尽量减少记忆的内容
要尽量减少让用户记忆的内容。例如,在绘图
系统中,用数字代号表示形体,而不要用名字。拾
取形体或图形使用交互式手段,而不需要记忆形体
的信息。
6.5 交互式技术工具箱
用户接口的外观和给人的感觉很大程度上取决
于它们所使用的各种交互技术。设计和实现一组好
的交互技术不是一件容易的事情,在 6.1节介绍了三
种用户接口的常用形式,即子程序库、专用语言和
交互命令。在这一节主要介绍三种交互技术实现工
具箱,即用户接口子程序库、资源描述语言和资源
编辑器。用交互技术工具箱,可以实现统一的外观、
统一的交互风格,可以节省编程时间。
1.用户接口子程序库
用户接口子程序库是为应用程序设计者提供的,
专门用来设计各种交互技术的子程序集。每个窗口
系统都提供了用户接口子程序库,常用的用户接口
子程序工具箱有,Andraw窗口管理系统工具箱,
Macintosh工具箱,Ms-Windows工具箱,X窗口系
统的 OSF/Motif和 InterView工具箱,在 X和 News两
个窗口系统上实现的 OpenLook工具箱和 SunView
窗口系统工具箱等。
工具箱中的子程序不仅可以有应用程序调用,
也可以在窗口管理系统中调用。在多个应用程序中
使用同一个工具箱,就可以保证应用程序、窗口管
理系统的外观和交互风格相一致。例如,对话框的
外观、布局、颜色,文字的输入域、列表框等,在
各个应用程序之间都具有相同的风格。
以下是利用 SunView工具箱编写的一段程序,
用于在一个窗口上建立一个命令按钮。
frame=(Frame) xv_create(NULL,
FRAME,/*指明生成一个对话框的框架 */
WIN_SHOW,TRUE,
FRAME_LABEL,“Sample”,/*框架的标题 */
XV_WIDTH,200,/*框架的宽度 */
XV_HEIGHT,100,/*框架的高度 */
NULL);
panel=(Panel) xv_create(frame,
PANEL,/*在 frame框架上生成一个对话板 panel*/
NULL);
(void) xv_create(panel,
PANEL_BUTTON,/*在 panel板上生成一个按钮 */
PANEL_LABEL_STRING,“Quit”,/*按钮的名字串
为 Quit*/
PANEL_NOTIFY_PROC,quit_proc,/*执行的程序过
程为 quit_proc*/
NULL); Sample
Quit
图 6.7 一个只含 Quit按钮的对话框
2.资源描述语言
MS-Windows用资源描述语言定义对话
框或菜单。资源描述语言中的语句对每一个
资源命名,并加以描述。资源描述文件的扩
展名为,RC,资源编译器 RC将资源描述文件
编译成资源代码文件(扩展名为,RES),再
将这个资源代码文件加入到应用程序的可执
行代码中去,最后的可执行程序(扩展名
为,exe)就是完整的用户接口应用程序,不
仅包括了对话框、菜单等用户界面,而且也
包含了应用程序的功能。
3.资源编辑器
编写用户接口一种更好的办法就是使用
资源编辑器。资源编辑器是一种可视化的界
面设计,可以使用资源编辑器交互地设计出
对话框、菜单的布局,然后再转换成程序代
码,与应用程序联结成可运行的目标代码。
使用资源编辑器,不需要任何编程技能就可
以很容易地设计较好的用户接口。在第 3章中,
我们介绍了 VC++中菜单资源编辑器的使用及
程序设计,另外还包括对话框编辑器、工具
栏编辑器、图形编辑器、资源符号编辑器等。
6.6 交互式技术程序设计与实验
? 实验目的:了解常用的图形交互技术及实现方法,
学习用户接口的程序设计。
? 实验内容:
1.学习 VC++菜单资源编辑器,菜单程序设计举
例;
2.学习 Autocad绘图的基本方法,了解常用的交
互式技术;
3.学习 OpenGL图形子程序库,编写高级的图形
程序。
6.6.1 菜单程序设计
在第 3章中已经介绍了利用 VC++进行菜单程序
设计,而在第 4章讲述了基本图形的生成算法和程
序设计。在这一节,我们将通过一个实例将绘图命
令放在用户界面的菜单中,通过选择绘图命令来绘
图。
步骤 1:创建 jhs应用程序工程文件,选择单文档应
程序;
步骤 2:利用 Resource View设计菜单,如图 6-8所
示;
图 6-8 菜单设计示例
菜单 选项
绘图( &P) Pop-up=Checked
菜单项 ID值 提示( Prompt)
直线 m_line 两点直线
圆 m_circle 画圆,圆心和半径
椭圆 m_ellipse 绘制椭圆
矩形 m_rectangle 绘制矩形
步骤 3:在 CMymenuView视图类中添加消息映射函数;
对象 消息 函数
m_line COMMAND OnMLine
m_circle COMMAND OnMCircle
m_ellipse COMMAND OnMEllipse
m_rectangle COMMAND OnMRectangle
添加方法:选择 View\ClassWizard菜单项,弹出如图 3-
19所示的创建类对话框,从中选择工程名( Projects)和类
名( Class name),并从 Object IDs列表框中选择 m_line项,
在 Messages列表框中选择 COMMAND,然后,单击,Add
Function”按钮,弹出加入成员函数的对话框,输入成员函数
名 OnMLine,确定后就添加了 OnMLine消息映射函数。
参照以上方法,添加上表中其他的函数。
步骤 4:绘制直线
按照第 4章实验一任务三的步骤,实现交互式绘直线;
按照第 4章实验二,实现交互式画圆;
但需要做如下的修改:
( 1)加入成员变量 m_item,用于表示绘图选择项,
proctected,
int m_item ; // 0:不绘图,1:直线,2:圆,3:椭圆,4:矩
形;
( 2)在构造函数中初始化变量;
CJhsView::CJhsView()
{
// TODO,add construction code here
//画直线的初始化参数
m_p1.x=0; m_p1.y=0; //起点
m_p2.x=0; m_p2.y=0; //终点
m_ist=0; //0,第 1点; 1,第 2点;
m_item=0; //0:不绘图,1:直线,2:圆,3:椭圆,4:矩形
//
m_bO.x=0; m_bO.y=0; //圆心
m_bR.x=0; m_bR.y=0; //圆上的点
// m_ist=0; //圆心与圆上的点区别
m_r=0; //圆的半径
}
( 3)添加菜单驱动函数:方法是右击 CjhsView类,选择消息
映射函数( add window message handler… )。在弹出的对
话框中的 class or object to handle列表中选择 m_ine,按下
,add and edit”,并在弹出的对话框中输入菜单驱动函数的名
字( OnMLine),按下“确定”键。同理,建立画圆的菜单
驱动程序 OnMCircle。
void CJhsView::OnMLine()
{
// TODO,Add your command handler code here
m_item=1;
}
void CJhsView::OnMCircle()
{
// TODO,Add your command handler code here
m_item=2;
}
( 4)在 OnDraw()中不进行绘图,主要靠鼠标绘图。
void CJhsView::OnDraw(CDC* pDC)
{
CJhsDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO,add draw code for native data here
//画直线
// Redraw(pDC);
// 调用自定义的成员函数,用鼠标画直线
}
( 5)鼠标左击和移动程序
void CJhsView::OnLButtonDown(UINT nFlags,CPoint point)
{
// TODO,Add your message handler code here and/or call
default
CDC *pDC=GetDC();
pDC->SelectStockObject(NULL_BRUSH);
// char tbuf[10];
// sprintf(tbuf,"m_item=%3d",m_item);
// AfxMessageBox(tbuf);
if (m_item==1) // 绘直线
{
if (!m_ist) //是起点
{
m_p1=m_p2=point; //纪录第一次单击鼠标位置,定圆

m_ist++;
}
else
{
m_p2=point; //记录第二次单击鼠标的位置,定终点的点
m_ist--; // 为新绘图作准备
DDAMouseLine(pDC,m_p1.x,m_p1.y,m_p2.x,m_p2.y,R
GB(255,0,0)); //绘制新直线
}
}
else if (m_item==2) //绘圆
{
//CDC *pDC=GetDC();
//pDC->SelectStockObject(NULL_BRUSH);
if (!m_ist) //绘制圆
{
m_bO=m_bR=point; //纪录第一次单击鼠标位置,定圆心
m_ist++;
}
else
{
m_bR=point; //记录第二次单击鼠标的位置,定圆周上
的点
m_ist--; // 为新绘图作准备
m_r=ComputeRadius(m_bO,m_bR);
MidpointCircle(pDC,m_bO.x,m_bO.y,m_r,RGB(255,0,0
));
}
}
ReleaseDC(pDC); //释放设备环境
CView::OnLButtonDown(nFlags,point);
}
void CJhsView::OnMouseMove(UINT nFlags,CPoint point)
{
// TODO,Add your message handler code here and/or call
default
CDC *pDC=GetDC();
if (m_item==1) // 绘直线
{
int nDrawmode=pDC->SetROP2(R2_NOT); //设置异或绘图
模式,并保存原来绘图模式
pDC->SelectStockObject(NULL_BRUSH);
if(m_ist==1)
{
CPoint prePnt,curPnt;
prePnt=m_p2; //获得鼠标所在的前一位置
curPnt=point;
//绘制橡皮筋线
DDAMouseLine(pDC,m_p1.x,m_p1.y,prePnt.x,prePnt.y,RG
B(255,0,0));
//DrawCircle(pDC,m_bO,prePnt); //用异或模式重复画圆,
擦出所画的圆
DDAMouseLine(pDC,m_p1.x,m_p1.y,curPnt.x,curPnt.y,RG
B(255,0,0));
//DrawCircle(pDC,m_bO,curPnt); //用当前位置作为圆周上
的点画圆
m_p2=point;
}
pDC->SetROP2(nDrawmode); //恢复原绘图模式
} else if (m_item==2) //绘圆
{
//CDC *pDC=GetDC();
int nDrawmode=pDC->SetROP2(R2_NOT); //设置异或绘图
模式,并保存原来绘图模式
pDC->SelectStockObject(NULL_BRUSH);
if(m_ist==1)
{
CPoint prePnt,curPnt;
prePnt=m_bR; //获得鼠标所在的前一位置
curPnt=point;
//绘制橡皮筋线
m_r=ComputeRadius(m_bO,prePnt);
MidpointCircle(pDC,m_bO.x,m_bO.y,m_r,RGB(255,0,0));//
用异或模式重复画圆,擦出所画的圆
// DrawCircle(pDC,m_bO,prePnt);
m_r=ComputeRadius(m_bO,curPnt);
MidpointCircle(pDC,m_bO.x,m_bO.y,m_r,RGB(255,0,0));
//用当前位置作为圆周上的点画圆
m_bR=point;
}
pDC->SetROP2(nDrawmode); //恢复原绘图模式
}
ReleaseDC(pDC); //释放设备环境
CView::OnMouseMove(nFlags,point);
}
步骤五:调试、编译、运行程序。
6.6.2 AutoCAD交互式绘图简介
一、实验目的和实验内容
AutoCAD是美国 Autodesk公司开发的图形设计
软件,在机械、建筑、电子、艺术等计算机辅助设
计( CAD)领域应用非常广泛,也是最早进入国内
市场的 CAD软件之一。从 80年代初期的 1.0版到以
后的 R13,R14,2000,2002版直到 2004年的
2005版,AutoCAD的产品在国内的市场上走过了二
十多年的历程。它简便易学、设计精确,成为当今
各国工程设计人员的首选设计软件。 AutoCAD软件
不仅具有完善的二维绘图设计功能,而且在 R13版
本以后都增加了三维设计的功能。本节仅对
AutoCAD的交互式绘图技术作简单的介绍,目的是
让读者从中看到、学到、用到本章前面学习的交互
式技术。实验包括如下内容:
1,认识 AutoCAD
2,命令行绘图技术
3,鼠标交互式绘图技术
4,AutoCAD基本绘图命令
5,AutoCAD图形选择与编辑
6,尺寸标注
二、实验步骤:
1.认识 AutoCAD
进入 AutoCAD后,屏幕显示如图 6.9的界面。
图 6.9 AutoCAD软件界面
标题栏
主菜单
工具栏
绘图工具
绘图区
命令
提示区
状态栏
AutoCAD绘图屏幕有以下几个区域:标
题栏、下拉式主菜单、工具栏、绘图工具、
绘图区、命令提示区和状态行。
AutoCAD软件可以通过三种方式进行绘
图:一是命令行方式,二是绘图工具,三是
主菜单。其中,命令方式最原始,要求记住
大量的命令和使用方法。绘图工具是将常用
的绘图命令放在工具栏和绘图工具栏上,提
高绘图速度。主菜单绘图功能最全,但使用
时常常需要多次选择菜单,速度较慢。另外,
主菜单还提供了图形的管理和多种辅助功能。
2.命令行绘图技术
在命令提示区,通过在 Command:后面输入绘
图命令和绘图所需要的参数进行绘图。这种方法要
求用户必须记住各种命令的使用方法。下面以命令
方式绘制一个三角形为例,讲述命令行的操作方法。
(1)运行 AutoCAD软件,进入该软件的操作界面;
(2)在命令区输入如下命令:
Command,LINE
From point, 3,3
To point,9,3
To point,6,9
To point,C (注:封闭命令 Close,同时 LINE
绘图命令结束 )
基本图元都可以通过命令行方式绘制,如点
( POINT)、直线( LINE)、圆( CIRCLE)、圆
弧( ARC)、椭圆( ELLIPSE)、文本( DTEXT)
等。命令行方式操作比较繁琐,需要记忆的命令和
参数较多。为了提高绘图速度和精度,AutoCAD定
义了一些功能键,来扶助绘图。常用的功能键有:
① F2:文本显示和图形显示转换键。缺省状态是图
形显示窗口,文本窗口可以显示更多的命令行。
AutoCAD支持双屏显示,但是在一个屏幕上可以通
过 F2进行切换。② F3:调用目标捕捉设置对话框。
③ F6(Ctrl+D):动态显示坐标开关。当它为动态直角
坐标或动态极坐标时,光标移动,状态行的坐标值
随鼠标移动而变化。④ F7( Ctrl+G),显示网格开关,
以便于精确作图。⑤ F8( Ctrl+O):正交方式开关,
只允许画水平或垂直直线。⑥ F9( Ctrl+B):捕捉
方式开关,只允许捕捉到网格上的点。⑦ F10
( Ctrl+T):数字化方式开关。
( 3)练习 GRID ON/OFF操作。双击状
态栏中的,GRID”按钮(或按 F7),绘图区
显示网格,状态栏,GRID”发黑,命令提示
区出现 <Grid on>,网格可作为绘图时参考坐
标。再双击,GRID”(或按 F7),网格消失,
命令提示区就会增加 <Grid off>。
( 4)练习 ORTHO ON/OFF操作。双击
状态栏中的,ORTHO”按钮(或按 F8),状态
栏,ORTHO”发黑,命令提示区增加 <Ortho
on>,用鼠标会一条任意直线,此时只能画垂
直或水平线。再双击该按钮(或按 F8),命
令提示区就会增加 <Ortho off>。
( 5)练习 SNAP ON/OFF操作。双击状
态行中的 SNAP按钮(或按功能键 F9),状
态栏,SNAP”发黑,命令提示区增加 <Snap
on>。移动坐标,光标只能按某一锁定的值移
动。如果同时置 GRID ON,则光标只能在网
格上移动。再按一次 F9,状态行,SNAP”变
灰,命令提示区出现 <Snap off>。
( 6)保存绘图文件,并退出 AutoCAD。
Command,SAVE
Command,QUIT
读者可以利用命令行方式试着绘制点、
园、椭圆等图形。
3.鼠标绘图技术
利用鼠标进行交互式绘图非常方便,通
过绘图工具或菜单选择绘图命令,然后在绘
图区通过鼠标定位和橡皮筋技术进行绘图。
在交互式绘图过程中,在命令行同时显示操
作的过程,有些过程还可以通过命令行输入
命令或参数来辅助交互式绘图。读者可以通
过交互式绘制点、线、园、矩形等常见的图
形。
4,AutoCAD基本绘图命令
下面列出 AutoCAD基本的绘图命令,以供读者加强
练习。
( 1) POINT(点)
功能:在指定的位置画点。
菜单位置,[Draw]→ [Point]
画点时,除非在菜单上选择了 Single Point(单
点 ),否则,必须按 ESC键结束该命令。
( 2) LINE(画直线 )
功能:在两个坐标点之间画一条直线段。
菜单位置,[Draw]→[Line]
该命令可以连续画直线段。在命令提示符
Command:后输入回车( Enter),表示命令结束。
输入 C(或 Close),最后一段线回到起始点,形成封
闭的图形。输入 U(或 Undo),回退一次,删除最后
一次画的直线段,可以连续多次 Undo。
( 3) CIRCLE(画圆)
功能:画整圆。
菜单位置,[Draw] →[Circle]
Circle命令有以下画圆方法:
2P,用直径的两端点来决定一个圆;
3P:三点决定一个圆;
TTR:与两圆相切和半径来决定一个圆;
Center,Radius:圆心和半径画圆;
Center,Diameter:圆心和直径来画圆。
( 4) ARC(画圆弧)
功能:画一段圆弧;
菜单位置,[Draw] →[Arc]
该命令选项包括:
A:所包含的角度( Angle); C:圆心( Center);
D:圆弧的方向( Direction); E:终点( End);
L:弦长( Length of Chord);
R:半径( Radius);
采用鼠标拖动技术画圆弧:输入两个点之后,
拖动功能自动激活,用拖动功能可在命令结束之前
看到结果。
( 5) ELLIPSE(画椭圆)
功能:画椭圆;
菜单位置,[Draw] →[Ellipse]
操作实例:
Command,ELLIPSE
Arc/Center/<Axis endpoint1>:
通过三种方式画椭圆:一是给出椭圆的
长轴和短轴,二是给出椭圆的圆心和两轴的
端点,三是画椭圆弧。
( 6) POLYGON(画正多边形)
功能:画出 3-1024边的正多边形。
菜单位置,[Draw] →[Polygon]
画正多边形有三种方法:一是设定外接圆半径
( I),二是设定内切圆半径 (C),三是设定正多边
形的边长( Edge)。
操作实例:
Command,POLYGON
Number of sides,8 (输入多边形的边数)
Edge/<Center of polygon>,(输入圆心或选一点 A
作圆心)
Inscribed in circle/Circumscribed about circle(i/c),I
(外接圆 )
Radius of circle,(输入半径或选外接圆上一点 B)
5,AutoCAD图形选择与编辑
大部分编辑命令的运行都有四个步骤:调用编
辑命令、选择实体(目标)、输入适当的参数,观
察屏幕的变化。有时也可以先选择实体,在调用命
令。
选择目标可以采用鼠标交互式选取,也可以采
用命令方式选择。常用的选择方式有:( 1) Object
pick:用光标点选图元;( 2) Window:指定对角
两点形成窗口,完全落在窗口中的实体被选中;
(3)Crossing:指定对角两点形成窗口,只要图元有
部分在窗口中均被选中;( 4) Remove:从选择集
中移去选择的目标;( 5) Add:从 Remove模式切
换到正常状态,进入添加选择目标操作。( 6) ALL:
选择图中除了被锁定或冻结的图层上的实体以外的
所有实体。
常用的编辑命令有:
( 1) ARRAY(阵列)
功能:将选择的目标按规则排列方式(矩阵或
极坐标)大量复制。
菜单位置,[Modify] →[Array]
该命令的操作过程:首先选择目标实体,然后
提示输入排列的方式。 Array命令中有两个排列选择
项,R(Rectangular array)和 P(Polar array),分别
表示矩形阵列和极坐标形阵列。
( 2) COPY(拷贝)
功能:复制图形。
菜单位置,[Modify] →[Copy]
命令操作过程:选择目标实体,然后定位复制
位置点。其中命令中的 M( Multiple)表示多重拷贝,
可以多次复制实体,回车结束命令。
( 3) MIRROR(镜像)
功能:生成图形的对称图形。
菜单位置,[Modify] →[Mirror]
操作过程:首先选择目标对象,然后通过两点
形成对称线,最后一步决定是否删除就图形。镜像
对称线可在任何方向上。如果要生成正确的水平或
垂直镜像,可将正交模式 ORTHO打开。
( 4) OFFSET(平行复制)
功能:复制一个与指定图元(如直线、圆、圆
弧等)平行并且保持等距离的新图元。
菜单位置,[Modify] →[Offset]
操作过程:首先给出平行线或通过点,然后选
择平行复制的目标,指定向那一边复制,最后以回
车表示命令结束。
( 5)其它的一些命令
ERASE:删除所选的图形;
UNDO 和 REDO:取消和恢复上次所做的操作;
MOVE:移动所选择的图形到另一个位置;
ROTATE:将图形绕某一基准点准确做操作;
CHAMFER:对两条线或一条多义线倒角;
FILLET:使两个图元(线或圆、圆弧)或多义线产生圆角;
BREAK:将线、圆、圆弧和多义线断开分为两段,或删除
部分实体;
TRIM:修剪,以某些图元作为边界,将不需要的部分剪掉;
EXTEND:延伸,将某个图元延伸到指定的边界;
STRETCH:拉伸,将图形某一部分拉伸、移动和变形,其
余部分不动;
SCALE:缩放,将图形按一定比例放大或缩小;
6,AutoCAD尺寸标注
AutoCAD提供尺寸标注功能,只要指出
标注部分的尺寸,AutoCAD就可以自动计算
尺寸大小并标注到图形上。 AutoCAD的基本
尺寸标注有长度、角度、直径、半径、旁注
线标注、中心点标注等。
尺寸标注的基本名词有 Diimension Line
(尺寸线),Dimension Arrow(尺寸箭头)、
Extension Line(尺寸线),Dimension Text
(尺寸文本)。如图 6.10所示。
8.0000
尺寸 界线
尺寸箭头
尺寸文本
尺寸线
图 6.10 尺寸标注的组成
常用的尺寸标准命令:
( 1) DIMLINEAR(线性尺寸标注)
功能:绘制线性尺寸。
菜单位置,[Dimension] →[Linear]
操作实例:
? Command,DIMLIN
? First extension line origin or press ENTER to
select,(输入第一条尺寸界线的位置或回车 )
? 回车后,AutoCAD提示:
? Select object to dimension,(选择要标注的目标)
? Dimension line location
(Mtext/Text/Angle/Horizontal/Vertical/Rotated):
(尺寸线位置)
? Dimension Text<测量值 >:(输入标注的尺寸文本)
( 2) DIMANGUR(角度标注)
功能:标注两相交线的夹角尺寸(自动带有角
度符号,o”)
菜单位置,[Dimension] →[Angular]
Command,DIMANG
Select arc,circle,line,or RETURN:(选择标准对象)
( 3) DIMDIAMETER(直径标注)
功能:标注圆或圆弧的直径尺寸(自动带有直
径符号“¢”)
菜单位置,[Dimension] →[Diameter]
Command, DIMDIA
Select arc or circle:(选择圆或圆弧上的一点)
Dimension line location(Mtext/Text/Angle):(选尺寸
线位置)
( 4) DIMRADIUS(半径标注)
功能:标注圆或圆弧的半径尺寸(自动带有直径符号
,R”)
菜单位置,[Dimension] →[Radius]
操作同 DIMDIAMETER命令。
( 5) LEADER(旁注线标注)
功能:用指引线引出标注。
菜单位置,[Dimension] →[Leader]
Command,LEADER
From point:(指引线的起点)
To point:(指引线的终点,该点)
To point/(Format/Annotation/Undo)<Annotation>:
三、实验总结:
1,通过对 AutoCAD软件的使用,谈谈你对计
算机图形学有哪些新的认识?
2,AutoCAD软件中采用了哪些交互式技术?
3,如果实现图形拖动技术,如何设计实现算
法?利用 VC++编写图形拖动程序
?作业与练习