简单图形软件包

上传人:san****019 文档编号:70824433 上传时间:2019-01-18 格式:PPT 页数:68 大小:458.01KB
返回 下载 相关 举报
简单图形软件包_第1页
第1页 / 共68页
简单图形软件包_第2页
第2页 / 共68页
简单图形软件包_第3页
第3页 / 共68页
简单图形软件包_第4页
第4页 / 共68页
简单图形软件包_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《简单图形软件包》由会员分享,可在线阅读,更多相关《简单图形软件包(68页珍藏版)》请在金锄头文库上搜索。

1、第2章 一个简单的二维光栅图形 软件包,SRGP(Simple Raster Graphics Package),2,知识点: 扫描转换 图元的声明 图元的属性控制 获取用户输入的两种方法 简单的交互程序的结构 画布 裁剪窗口 位块拷贝 显示模式,3,要求: 掌握扫描转换、画布、裁剪窗口等概念; 掌握图元(点、直线段、折线、标记、圆弧、椭圆弧、字符)的含义及其参数指定方式; 掌握如何对图元进行属性(线型、线宽、颜色等)控制; 了解用来获取用户输入的两种基本方式:取样方式和事件驱动方式 了解如何通过如上两种输入方式设计简单的交互式绘图程序; 了解位块拷贝功能; 掌握4种基本的显示模式:覆盖、或、

2、异或、与。,4,矢量显示(随机扫描显示器)和光栅显示是两种完全不同的图形显示技术 目前,光栅显示技术占主要地位 1、光栅显示可以用颜色或图案来填充一个区域; 2、光栅显示以象素为单位进行读写和存储,可以实现对物体细节的描述; 3、图形的任意部分均可以被移动和复制。,2.1 用图形软件包绘图 2.2 基本的交互处理 2.3 光栅操作,应用 模型,应用 程序,SRGP,图形 硬件 设备,输出流,输入流,2.1 用图形软件包绘图,图元的声明 图元的属性 填充图元及属性 保存和恢复图元的属性 字符,2.1 用图形软件包绘图,2.1.1 图元的声明 绘图纸,屏幕, 坐标系 扫描转换:将顶点(参数表示的图

3、形)转换为点阵(像素)表示的图形,2.1 用图形软件包绘图,基本图元绘制:点、直线段、折线、多边形、 圆弧、字符。 数据类型: struct Point int x, y; typedef int * VertexCoordList; 或 typedef Point *VertexList;,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);

4、/画线函数,Void polylineCoord( int vertexCount, VertexCoordList xArray, VertexCoordList yArray); Void polyline(int vertexCount, VertexList vertices); /画折线函数。 polyline(6,bowtieArray);,2. 标记 Void MarkerCoord(int x, int y); Void Marker(Point *pt); /端点做标记。 3. 多边形和矩形 Void Polygon(int VertexCount, VertexList v

5、ertices); /画多边形。,,*,12,三种不同的方式: 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,4. 圆弧和椭圆弧 Void CircleArc (Point *center, int radius, in

6、t startAngle, int endAngle); /画圆弧 Void EllipseArc(Rectangle *externRect, int startAngle,int endAngle); /画椭圆,作为对比,vc提供了画图函数 画点 画线 折线 圆弧 椭圆 圆 填充等,Vc绘图简介,15,绘图点,用坐标画点: pDC-SetPixelV(10,15,RGB(255,0,0); 用点画点: CPoint Point; Point.x = 10; Point.y = 15; pDC-SetPixelV(Point,RGB(255,0,0);,画点举例,坐标,颜色,点,颜色,17,

7、程序代码画线函数,X1,Y1,X2,Y2,用坐标画线: pDC-MoveTo(0,0); pDC-LineTo(100,150);,画线举例,坐标,用点画线: CPoint Point1; CPoint Point2; Point1.x = 0; Point1.y = 0; Point2.x =100; Point2.y = 150; pDC-MoveTo(Point1); pDC-LineTo(Point2);,画线举例,点,Point1,Point2,例:,20,绘图圆弧函数,x1,y1,x2,y2,x3,y3,x4,y4,x3,y3和x4,y4为圆弧起点终点,x1,y1和x2,y2为圆弧

8、的矩形框,可计算半径,逆时针方向,21,例:,ps,pe,圆弧举例,22,绘图椭圆函数(画整圆),绘图整圆,x1,y1,x2,y2,x1,y1和x2,y2为圆弧的矩形框,可计算半径,24,画整圆举例,例:,2.1.2 图元属性,图元的外观由属性决定,属性是全局状态变量。 1. 线型和线宽 Void SetLineStyle(enum LineStyle lineStyle); 枚举变量 lineStyple 预定义线型: CONTINUOUS(实线)、 DASHED(虚线)、DOTTED(点线) Void SetLineWidth(int lineWidth);,2.1.2 图元属性,图元在显

9、示时被扫描转换成离散的像素写入帧缓冲器中,线型控制可看作有选择地写像素的位屏蔽器. 位屏蔽器为0表示帧缓存中相应的像素值不变(即透明), 为1表示用线段的颜色值代替帧缓存中相应的像素值。,图元属性,2. 颜色 SRGP中,设置颜色属性有三种方式: 三种指定颜色的方式 通过查色表索引值 通过颜色名称 通过红、绿、蓝三分量 Void SetColorByName(cnum Colors colorName); /使用逻辑颜色名,实际对应的颜色取决于系统查色表,逐段定义线色号,图元属性,Void SetColor(int colorIndex); /直接使用整数值来指定,colorIndex即是指向

10、查色表某表项的索引值 Void SetColor(int red, int green, int blue); /直接赋颜色分量值(对真彩色系统而言),2.1.3 填充图元及其属性,封闭的图元有二种绘制方式 - 线画图:只画出边框; - 填充图:填充其内部区域; Void FillRectangle(Rectangle *rec);/矩形 Void FillPolygon(int vertexCount, VertexList Vertices); /多边形 Void FillEllipse(Rectangle * extentRect); / 椭圆 Void FillEllipseArc (

11、Rectangle * extentRect, int startAngle, int endAngle); /扇形,区域填充属性,填充式样:,空心,实心,图案,区域填充属性,填充颜色,填充图案,填充方式设置(控制填充图元的外观) Void SetFillStyle(enum FillStyle fillstyle)/设置填充方式的函数 FillStyle定义如下: enum FillStyle SOILD, /以当前前景色均匀填充图元 BITMAP_PATTERN_OPAQUE, BITMAP_PATTERN_TRANSPARENT, / 以规则排列的位图填充; PIXMAP_ PATTER

12、N /以规则排列的像素图填充; 位图:二值图像 像素图:多值图像 SRGP提供位图/像素图资源表,2.1.3 填充图元及其属性(续),以规则排列的位图填充 BITMAP_PATTERN_OPAQUE /不透明方式,对应位图中“1”的像素用前景色(即当前设定的颜色)显示;对应位图中“0”的像素用背景色显示。背景色由函数void SetBackgroundColor(int colorIndex)设定。 BITMAP_PATTERN_TRANSPARENT /透明方式,对应位图中“1”的像素依然用前景色显示;对应位图 中“0”的像素,颜色保持不变。,无论是以位图还是像素图填充图元,图元所呈现的颜色

13、总依赖于当前系统查色表的内容,因为位图/像素图中保存的仅仅是颜色的索引值。,2.1.4 保存和恢复图元的属性,目的:为了提高程序的模块化程度 Void InquireAttributes(AttributeGroup *group); Void SetAttributes(AttributeGroup *group); /AttributeGroup 为SRGP定义的结构,其中包括:前景色、背景色、线型、线宽、填充方式、查色表等SRGP支持的所有属性。,2.1.5 字符,属性:字体(宋体,楷体)、字形(粗体,斜体)、字型(7 X 9,16 X 24)、字间距、行间距。 点阵字符的参数 Void

14、 OutText(Point *origin, char *text)/产生一个字符,其中的x坐标标明字符串text中第一个字符的左边界,y坐标确定基线位置。 Void SetFont(int fontindex) /设置当前的字体和字型,37,2.2.1 基本原则 2.2.2 逻辑输入设备 2.2.3 输入方式 请求 取样方式 事件驱动方式 2.2.4 设置输入方式属性,2.2 基本的交互处理,38,提供简单一致的交互操作序列;(menu,button) 交互的每一阶段,清晰显示可选项; 样式简洁,选项有层次、简单; 给用户适当的反馈(highlight,光标形状); 允许用户取消操作(Un

15、do),解决方法:菜单、按钮、加亮、变灰、光标变化等等,2.2.1 交互系统设计的基本原则:,39,2.2.2 逻辑输入设备,设计软件包要考虑设备无关性与软件可移植性 SRGP所支持的逻辑输入设备有: 定位设备 键盘设备 (一般逻辑输入设备有几种?六种逻辑输入设备,即定位设备、笔划设备、字符串设备、定值设备、选择设备、拾取设备 ) 逻辑输入设备到实际物理设备的映射由设备驱动程序完成,40,一般逻辑输入设备,主要逻辑输入设备(交互任务): 定位:单点定位、多点定位 选择:菜单选择、图素拾取 字符串:输入字符串 数值:输入实数值,41,定位定位中的基本问题,定位设备用来输入一个位置坐标(x,y)

16、坐标系统:用户坐标系、屏幕坐标系、物体坐标系 分辨率:定位数据精度,精度较低可以采用局部放大进行精确定位 网格约束:将鼠标位置定位在网格上 反馈:显示定位数据或位置,42,定位定位中的基本问题,单点定位:每次输入一个点,完成一次交互输入。 笔划定位:每次输入多个点,完成一次交互输入。,用于图形的输入点,43,选择功能,选择功能: 选择菜单、命令(选择) 选择几何图素(拾取),44,字符输入,字符输入向应用程序输入字符串 可用的方法 词、短语、词组以词条形式提供选择 键盘输入 字符识别,45,数值输入,数值输入向应用程序输入实数值 可用的方法 键盘输入 选择数字 模拟数值方法 数字、语音识别,对话框实现,46,数值输入,对话框实现,47,2.2.3 输入方式,输入控制方式:说明

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号