




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 一个简单的二维光栅图形 软件包 SRGP(Simple Raster Graphics Package) 1 1 u知识点: 扫描转换 图元的声明 图元的属性控制 获取用户输入的两种方法 简单的交互程序的结构 画布 裁剪窗口 位块拷贝 显示模式 2 2 u要求: u掌握扫描转换、画布、裁剪窗口等概念; u掌握图元(点、直线段、折线、标记、圆弧、 椭圆弧、字符)的含义及其参数指定方式; u掌握如何对图元进行属性(线型、线宽、颜色 等)控制; u了解用来获取用户输入的两种基本方式:取样 方式和事件驱动方式 u了解如何通过如上两种输入方式设计简单的交 互式绘图程序; u了解位块拷贝功能; u掌握4种基本的显示模式:覆盖、或、异或、 与。 3 3 u矢量显示(随机扫描显示器)和光栅显示是 两种完全不同的图形显示技术 u目前,光栅显示技术占主要地位 1、光栅显示可以用颜色或图案来填充 一个区域; 2、光栅显示以象素为单位进行读写和 存储,可以实现对物体细节的描述; 3、图形的任意部分均可以被移动和复 制。 4 4 2.1 用图形软件包绘图 2.2 基本的交互处理 2.3 光栅操作 应用 模型 应用 程序 SRGP 图形 硬件 设备 输出流 输入流 5 5 2.1 用图形软件包绘图 u图元的声明 u图元的属性 u填充图元及属性 u保存和恢复图元的属性 u字符 6 6 2.1 用图形软件包绘图 2.1.1 图元的声明 绘图纸,屏幕, 坐标系 扫描转换:将顶点(参数表示的图形)转换 为点阵(像素)表示的图形 扫描转换 顶点(参数) 表示的图形 用户 点阵表示 的图形 显示系统 7 7 2.1 用图形软件包绘图 u基本图元绘制:点、直线段、折线、多边形、 圆弧、字符。 u数据类型: struct Point int x, y; typedef int * VertexCoordList; 或 typedef Point *VertexList; 8 8 1. 点、直线段和折线 Void PutPixel(int x, int y, int color); /画点 函数,color :颜色值。 Void LineCoord(int x0, int y0,int x1,int y1); Void Line (Point *pt1, Point * pt2); /画线 函数 9 9 Void polylineCoord( int vertexCount, VertexCoordList xArray, VertexCoordList yArray); Void polyline(int vertexCount, VertexList vertices); /画折线函数。 polyline(6,bowtieArray); 1010 2. 标记 Void MarkerCoord(int x, int y); Void Marker(Point *pt); /端点做标记 。 3. 多边形和矩形 Void Polygon(int VertexCount, VertexList vertices); /画多边形。 ,* 1111 三种不同的方式: Void RectangleCoord(int leftx,int bottom Y,int right X,int topY); Void RectanglePoint(Point* leftBottom, Point* rightTop); Void Rectangle(Rectangle *rect); /画矩形 Typedef struct Point leftBottom,rightTop; Rectangle 1212 4. 圆弧和椭圆弧 Void CircleArc (Point *center, int radius, int startAngle, int endAngle); /画圆弧 Void EllipseArc(Rectangle *externRect, int startAngle,int endAngle); /画椭圆 (x3,y3) (x4,y4) 1313 作为对比,vc提供了画图函数 画点 画线 折线 圆弧 椭圆 圆 填充等 Vc绘图简介 1414 绘图点 1515 用坐标画点: pDC-SetPixelV(10,15,RGB(255,0,0); 用点画点: CPoint Point; Point.x = 10; Point.y = 15; pDC-SetPixelV(Point,RGB(255,0,0); 画点举例 坐标 颜色 点颜色 1616 程序代码画线函数 u X1,Y1 X2,Y2 1717 用坐标画线: pDC-MoveTo(0,0); pDC-LineTo(100,150); 画线举例 坐标 1818 用点画线: CPoint Point1; CPoint Point2; Point1.x = 0; Point1.y = 0; Point2.x =100; Point2.y = 150; pDC-MoveTo(Point1); pDC-LineTo(Point2); 画线举例 点 Point1 Point2 例: 1919 绘图圆弧函数 u x1,y1 x2,y2 x3,y3 x4,y4 x3,y3和x4,y4为圆弧起点终点 x1,y1和x2,y2为圆弧的矩形框,可计算半径 逆时针方向 2020 例: ps pe 圆弧举例 2121 绘图椭圆函数(画整圆) 2222 绘图整圆 x1,y1 x2,y2 x1,y1和x2,y2为圆弧的矩形框,可计算半 径 2323 画整圆举例 u 例: 2424 2.1.2 图元属性 图元的外观由属性决定,属性是全局状态变量。 1. 线型和线宽 uVoid SetLineStyle(enum LineStyle lineStyle); 枚举变量 lineStyple 预定义线型: CONTINUOUS(实线)、 DASHED(虚线)、DOTTED(点线) Void SetLineWidth(int lineWidth); 重复画基本线 : 2倍、4倍 2525 2.1.2 图元属性 图元在显示时被扫描转换成离散的像素写入帧缓冲 器中,线型控制可看作有选择地写像素的位屏蔽 器. u位屏蔽器为0表示帧缓存中相应的像素值不变 (即透明), u为1表示用线段的颜色值代替帧缓存中相应的 像素值。 2626 图元属性 2. 颜色 uSRGP中,设置颜色属性有三种方式: u三种指定颜色的方式 通过查色表索引值 通过颜色名称 通过红、绿、蓝三分量 Void SetColorByName(cnum Colors colorName); /使用逻辑颜色名,实际对应的颜色取决于系统查 色表 逐段定义线色号 2727 图元属性 Void SetColor(int colorIndex); /直接使用整数值来指定,colorIndex即是指向 查色表某表项的索引值 Void SetColor(int red, int green, int blue); /直接赋颜色分量值(对真彩色系统而言) 2828 2.1.3 填充图元及其属性 封闭的图元有二种绘制方式 - 线画图:只画出边框; - 填充图:填充其内部区域; Void FillRectangle(Rectangle *rec);/矩形 Void FillPolygon(int vertexCount, VertexList Vertices); /多边形 Void FillEllipse(Rectangle * extentRect); / 椭圆 Void FillEllipseArc (Rectangle * extentRect, int startAngle, int endAngle); /扇形 2929 区域填充属性 u填充式样 : 空心 实心图案 3030 区域填充属性 u填充颜色 填充图案 3131 l填充方式设置(控制填充图元的外观) Void SetFillStyle(enum FillStyle fillstyle)/设置填充 方式的函数 FillStyle定义如下: enum FillStyle SOILD, /以当前前景色均匀填充图元 BITMAP_PATTERN_OPAQUE, BITMAP_PATTERN_TRANSPARENT, / 以规 则排列的位图填充; PIXMAP_ PATTERN /以规则排列的像素图填 充; 位图:二值图像 像素图:多值图像 SRGP提供位图/像素图资源表 2.1.3 填充图元及其属性(续) 3232 以规则排列的位图填充 BITMAP_PATTERN_OPAQUE /不透明方式 ,对应位图中“1”的像素用前景色(即当前设定的 颜色)显示;对应位图中“0”的像素用背景色显示 。背景色由函数void SetBackgroundColor(int colorIndex)设定。 BITMAP_PATTERN_TRANSPARENT /透明方式,对应 位图中“1”的像素依然用前景色显示;对应位图 中“0”的像素,颜色保持不变。 3333 无论是以位图还是像素图填充图元,图元所呈现 的颜色总依赖于当前系统查色表的内容,因为位图/像 素图中保存的仅仅是颜色的索引值。 3434 2.1.4 保存和恢复图元的属性 目的:为了提高程序的模块化程度 Void InquireAttributes(AttributeGroup *group); Void SetAttributes(AttributeGroup *group); /AttributeGroup 为SRGP定义的结构,其中包括: 前景色、背景色、线型、线宽、填充方式、查色 表等SRGP支持的所有属性。 3535 2.1.5 字符 u属性:字体(宋体,楷体)、字形(粗体, 斜体)、字型(7 X 9,16 X 24)、字间 距、行间距。 u点阵字符的参数 Void OutText(Point *origin, char *text)/产生一个字符,其中的x坐标标明字符 串text中第一个字符的左边界,y坐标确定基 线位置。 Void SetFont(int fontindex) /设置当前的字体和字型 3636 2.2.1 基本原则 2.2.2 逻辑输入设备 2.2.3 输入方式 请求 取样方式 事件驱动方式 2.2.4 设置输入方式属性 2.2 基本的交互处理 3737 l提供简单一致的交互操作序列;(menu,button) l交互的每一阶段,清晰显示可选项; l样式简洁,选项有层次、简单; l给用户适当的反馈(highlight,光标形状); l允许用户取消操作(Undo) 解决方法:菜单、按钮、加亮、变灰、光标变化等等 2.2.1 交互系统设计的基本原则: 3838 2.2.2 逻辑输入设备 设计软件包要考虑设备无关性与软件可移植性 uSRGP所支持的逻辑输入设备有: 定位设备 键盘设备 (一般逻辑输入设备有几种?六种逻辑输入设 备,即定位设备、笔划设备、字符串设备、 定值设备、选择设备、拾取设备 ) u逻辑输入设备到实际物理设备的映射由设备 驱动程序完成 3939 一般逻辑输入设备 u主要逻辑输入设备(交互任务): 定位:单点定位、多点定位 选择:菜单选择、图素拾取 字符串:输入字符串 数值:输入实数值 4040 定位定位中的基本问题 u定位设备用来输入一个位置坐标(x,y) u坐标系统:用户坐标系、屏幕坐标系、物体 坐标系 u分辨率:定位数据精度,精度较低可以采用 局部放大进行精确定位 u网格约束:将鼠标位置定位在网格上 u反馈:显示定位数据或位置 4141 定位定位中的基本问题 u单点定位:每次输入 一个点,完成一次交 互输入。 u笔划定位:每次输入 多个点,完成一次交 互输入。 用于图形的输入点 4242 选择功能 u选择功能: 选择菜单、命令(选择) 选择几何图素(拾取) 4343 字符输入 u字符输入向应用 程序输入字符串 u可用的方法 词、短语、词组以词 条形式提供选择 键盘输入 字符识别 4444 数值输入 u数值输入向应用程序输入实数值 u可用的方法 键盘输入 选择数字 模拟数值方法 数字、语音识别 滑块 初值终值 对话框实现 4545 数值输入 对话框实现 4646 2.2.3 输入方式 u输入控制方式:说明输入操作与应用程序 之间的关系,与应用关系紧密 u3种方式: 请求方式:效率低,但有时必须使用 取样方式:取样输入设备的状态,效率不高 易丢失信息 事件方式:系统提供运行于后台的监控程序, 监控每一个输入事件并将信息存入事件队列 中。应用程序可以主动处理事件。 4747 请求方式 u应用程序与输入操作是串行关系 应用程序 输入操作 等 待 用户操作 4848 请求方式 应用程序向输入设备发出输入请求 命令 这段应用程序,等待用户输入数据 步骤(设定输入模式后) 用户执行一个输入操作 应用程序得到数据,继续执行 应用:应用程序需要输入数据,以便计算, 例如输入一个点 4949 2.2.4 取样方式 u应用程序按一定周期测试输入设备是 否有输入,如果有输入,马上进行处 理 优点:随时读入用户输入的数据,对用 户的动作给出实时反馈 缺点:在两个检测周期内,会丢失数据 5050 设置输入设备的输入方式: Void SetInputMode(enum Device inputDevice, enum InputMode inputMode) 枚举变量Device与InputMode的定义为: enum Device LOCATOR, /定位设备 KEYBOARD, / 键盘设备 ; enum InputMode INACTIVE, /非激活状态 SAMPLE,/取样方式 EVENT;/事件驱动方式 2.2.4 取样方式 指定设备类型 指定设备方式 举例:设定位设备为取样方式 SetInputMode(LOCATOR,SAMPLE); 5151 定位设备:输入的信息分为3部分: 光标当前的位置 各个键的状态(UP还是DOWN) 哪个键(左键还是右键)发生了状态改变? 信息获取函数 Void SampleLocator(LocatorMeasure, *measure); 2.2.4 取样方式 5252 2.2.5 事件驱动方式 u应用程序与输入操作是并行关系 应用程序 输入动作 队列 输入动作 输入动作 用户操作 5353 2.2.5 事件驱动方式 应用程序随时查询输入队列是否有事件 如果有事件,应用程序转去处理事件 步骤(设定输入模式后) 如果无事件,应用程序将挂起,等待事 件。如果在指定的时间内,没有事件发 生,将返回应用程序 取出事件,放入事件记录中,返回这个 事件的设备值参数 从事件记录中取出数据,应用程序转去 执行 5454 2.2.5 事件驱动方式 应用:应用于异步输入数据的情况 优点:既不丢失数据,因为用户所有 的输入操作都存入队列中,提高交互 输入的速度;又具有随机性,用户随 时输入 5555 2.2.5 事件驱动方式 基于事件驱动方法的程序结构: 初始化输入设备; do waitEvent(event);/*等待事件发生*/ switch(event)/*处理事件*/ case EVENT1: procedure1; break; case EVENT2: procedure2; break; ; while (TRUE);5656 2.2.6 设置输入设备的属性 设置输入设备的输入方式 Void SetLocatorEchoType(enum EchoType echoType);/定位设备反馈方式的设置 echoType取值: 1.NO_ECHO 无反馈 2.CURSOR 光标反馈 /SRGP将各种形状的 光标存储在一张资源表中,通过调用 Void SetCursor(int cursorIndex);来选择所需光 标 5757 2.2.6 设置输入设备的属性 3.RUBBER_LINE/RUBBER_RECT 橡皮筋线/ 橡皮筋矩形,由二点确定:锚点与当前光标点。 锚点是固定的,锚点由函数 void SetLocatorEchoRubberAnchor(Point *anchor) 设置。当前光标点的位置随用户的输入而变化。 锚点 当前点 锚点 当前点 5858 定位设备的各种反馈方式示例 p38 nmt 图2.11 函数 Void SetLocatorMeasure(Point *position); /设置光标位置 2.2.6 设置输入设备的属性 5959 键盘设备无反馈方式的属性 Void SetKeyboardEchoOrigin(Point *origin) / 用来设置初始化时屏幕上显示输入字符串的基点。 当键盘设备被激活时,缺省的状态为空串。 下面键盘状态设置函数可改变缺省状态: Void SetKeyboardMeasure(char *keyMeasure) / keyMeasure代表一个字符串 2.2.6 设置输入设备的属性 6060 2.3 光栅操作 2.3.1 画布 2.3.2 裁剪窗口 2.3.3 位块拷贝 2.3.4 显示模式 6161 u画布(Canvas) 是抽象的数据类型,用来保存菜单和屏幕 上一块图像的图元称为画布。用户可以在 其中画图 包括一个像素图和一些控制信息 具有独立的坐标系 系统可以同时有多个画布,只有一个处于 激活状态 屏幕是一个特殊的画布,唯一被显示的画 布。 绘图命令的作用对象是处于激活状态的画 布 2.3.1 画
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年福建省市场监督管理局直属事业单位公开招聘20人考前自测高频考点模拟试题及答案详解1套
- 2025年综合类-诊断学-肺部检查历年真题摘选带答案(5卷100道集锦-单选题)
- 2025年综合类-眼科(医学高级)-眼科综合练习历年真题摘选带答案(5卷100道集锦-单选题)
- 2025拖车服务合同协议书
- 2025年综合类-用电监察员初级工-相关知识历年真题摘选带答案(5卷100道集锦-单选题)
- 防水补漏协议合同屋(2025版)
- 2025沈阳市房地产居间服务合同范本示例
- 发行合同协议书范本2025年
- 2025水陆联运货物运输合同
- 2025年综合类-海洋知识竞赛-中国海洋历年真题摘选带答案(5卷100道集锦-单选题)
- 物联网工程专业介绍
- 金锭市场分析及投资价值研究报告
- 血液透析中低血压的预防及处理
- 市场调研表格模板
- 无脊椎动物课件-2024-2025学年人教版生物七年级上册
- 粮食代耕代种协议书范本
- 女性全生命周期健康管理系统(征求意见稿)
- 四川省成都市2024年小升初语文真题试卷及答案
- 2024-2025学年华东师大版数学七年级上册计算题专项训练
- 环境影响评价技术导则 核设施退役环境影响报告书(表)的格式和内容(征求意见稿)
- 幼儿心理健康教育智慧树知到期末考试答案2024年
评论
0/150
提交评论