计算机论文:基于net的图形绘制处理系统设计与开发内容摘要:

程序来处理数据。 2. 电子商务领域电子商务要跨越目前发展中的障碍,获得新的发展生机,需要做的第一步就是将企业之间日常交流和交换信息尽可能电子化统一化,来满足不同商业系统之间的交换需求。 XML的丰富置标语言,完全可以描述不同类型的单据,例如信用卡,保险单以及各种发票等。 结构化的XML发送至Web的数据可以加密。 因此,XML有希望推动电子数据交换技术在电子商务领域的大规模应用。 3. 数据库领域XML 文档从本质上来看就是数据库,它是数据的集合,每个文件都含有某种类型的数据。 在很多方面看起来它和其他文件没什么区别,但作为一种“数据库”格式,XML有些优点,例如,它是自描述的,可交换的,能够以树状或图形结构描述数据。 4. 软件设计元素的交换XML也可以用来描述软件设计中有关的设计元素,如对象模型,甚至能描述最终设计出来的软件,这些基于XML的设计元素可以借助Web在开发组内进行交换,在不同的开发工具之间交换。 第四章 系统分析设计 系统结构图 本系统所完成的功能包括基本图形的绘制,图形处理等基本操作,图形文件的存储与读写,图形的选中功能等。 其中,本系统所实现的基本图形绘制有直线、椭圆、三角形、矩形、五角星和等五边形;图形的基本操作功能有平移,缩放,旋转;图形的选择也实现了单选与多选两种;另外,本系统还增加了一个钢笔工具,可以用钢笔工具绘制直线片段、曲线片段以及自由图形。 具体的功能如下图所示:图形绘制处理系统基本图形绘制图形处理图形选择直 线图形线条椭 圆矩 形三 角 形多 边 形线 型线条颜色颜色透明度线 型填 充 色填充方式钢笔工具直线片段曲线片段自由图形平 移缩 放旋 转单 选多 选填充线条宽度图41 系统结构图 功能模块分析设计上一小节地介绍了系统的结构图,这节主要介绍各个模块的主要功能。 该系统实现了一般绘图应用程序所具有的绝大多数功能,并提供了一些额外的辅助功能。 具体而言,其功能模块主要包括如下几个。 图形绘制功能模块 图形绘制功能模块是本系统中最基本的一个模块,其他的所有操作都是在此模块完成的基础上进行的。 该模块可以通过绘图工具栏绘制下列图形:(1) 直线直线的绘制只需要确定两个点,一个是起点,一个就是终点,绘制时这两个点的位置是可以随意定的,起点是通过MoveTo函数来确定的,当鼠标移动到绘图区域的任意位置左击,便确定了起点,然后直接拖动鼠标至任意位置停止,直线便绘制成功,在这过程中间用到了LineTo函数。 (2) 矩形实际上,矩形是由四条直线段组成的封闭图形,所以绘制矩形的原理和绘制直线的原理是相同的。 本系统中矩形的算法是:先确定矩形的中心点坐标。 然后根据中心点坐标计算出左上顶点的坐标,把该顶点作为起点,并使用MoveTo函数和LineTo函数进行绘制。 (3) 椭圆 本系统绘制的椭圆是标准椭圆。 标准椭圆是关于长轴和短轴都对称的,所以,可以将椭圆分成四部分来绘制,每个部分都是一个曲线片段。 在本系统中,专门定义了一个CurveTo函数来实现椭圆曲线片段的绘制。 椭圆的绘制起点为其外接矩形左中点。 (4) 三角形 本系统中,通过工具栏中的三角形工具所绘制的是等边三角形。 等边三角形可以看成是由三个直线段围成的封闭图形,内角角度都为60176。 在本绘图系统中,绘制三角形时,前鼠标按下的位置就是起点,鼠标弹起的位置就是终点,也就是说是通过拖拽某个点来绘制的,并且可以以任意的角度绘制。 (5) 多边形 在本绘图系统中,主要是实现了五角星和等五边形这两个多边形工具,其绘制原理和三角形的绘制原理是一样的,同样也可以以任意的角度绘制。 (7) 钢笔工具 前面介绍的几个画图功能只能快速的绘制一些简单、常用的图形。 钢笔工具则丰富了本绘图系统的会图功能,它可以画直线线段、曲线线段、任意多边形以及其他任意自由图形。 图形处理功能模块 对图形进行一些必要的处理可以使图形更符合实际需求,更加美观、实用。 在本系统中,图形处理功能主要包括:平移、旋转、缩放这几个。 平移、旋转、缩放可以归结为图形变换,即图形变换指的是变换图形的形状、大小或位置。 一个二维图形按照某种规律变换成另一个二维图形叫做二维图形变化,本系统实现的就是二维图形的几何变换。 一幅二维几何图形可以由许多直线连接而成,或者被看成由许多小直线段逼近而成。 而一条直线段则可以由始末端点相连产生。 所以,可以把一幅二维图形看成是一个点集。 如果在XY平面内,一个点的坐标用行向量[x y]表示,那么一个图形的点集则可以用m2的矩阵表示。 这样,对图形的几何变换就可以归结为对点的变换。 在二维平面内,假如变换前的点坐标为(x ,y),变换后的坐标为(x’ ,y’ )这个变换过程可以写成如下矩阵形式:[x’ y’ ] = [x y]T ,T被称为线型变换矩阵。 二维几何变换的一般形式也可以写成如下代数形式: x’ = a1 x + b1 y + c1 y ’ = a2x + b2y + c2 在本系统中,图形的几何变换都要用到两个Matrix类的方法函数:RotateAt和Translate,前者表示通过预先计算旋转,沿指定点顺时针旋转该Matrix;后者表示通过预先计算转换向量,将指定的转换向量应用到此Matrix。 下面介绍一下本系统中的二维图形几何变换:(1) 平移变换 本系统中,不论往哪个方向平移,都可以实现二维图形的平移变换。 (2) 旋转变换 在本系统中,每个图形都有一个矩形控制框,矩形控制框上有八个控制点,分别是矩形的四个顶点和四条边的中点。 该系统设置了当鼠标靠近各个顶点的距离不超过六个像素时,可以显示可旋转变换符号,图形的旋转变换中心点为图形的中心点。 (3) 缩放变换该系统设置了当鼠标靠近各个顶点的距离小于两个像素时,可以显示可旋转变换符号,缩放变换可以只缩放X轴方向的大小,或者只缩放Y轴方向的大小,或者两者同时缩放 图形线条 线条的属性设置一般都有线条的宽度,线条的类型,线条的颜色。 在本系统中,除了可以设置上述线条属性外,还添加了一项功能——设置线条颜色透明度,为了方便操作使用,这些线条属性的改变,都是通过一个对话框来实现的,本系统的线条属性设置对话框设计如下: 图42 线条属性设置界面 从上图可以看到,线条宽度的默认值为1,可以通过在编辑框中手动输入数字调整线宽。 线条颜色框的设置调用了MFC中自带的CColorDialog ,它表示一个通用的对话框,该对话框可以显示可用的颜色以及用户自定义颜色,这样的话既美观又实用,操作方便。 颜色透明度的值在0%~100%之间,是通过SilderCtrl工具来改变颜色透明度值的。 本系统中的线条样式总共有五种,分别是实线、虚线、点线、点虚线、点点虚线,直接使用了LineStyle中的五种类型的线条样式:PS_SOLID、PS_DASH、PS_DOT、PS_DASHDOT、PS_DASHDOTDOT[9]。 图形填充图形填充方式一般都有无填充方式、单色填充和纹理填充。 在本绘图系统中,除了上述三种填充方式外,还添加了另外一种填充方式——渐变填充方式。 除了无填充方式外,其他三种方式的共同点就是颜色框同线条颜色框一样,调用是CColorDialog,同时,三种填充方式都能设置颜色透明度原理同线条一样。 纹理填充的颜色分前景色和背景色两种,前景色定义线条的颜色,背景色定义线条之间间隙的颜色,在本系统中,提供了53种纹理填充样式,直接用HatchBrush类中自带的填充样式。 渐变填充方式中,渐变颜色至少为两个,最多不能超过十个,可以通过添加颜色和删除颜色两个按钮来删减颜色,另外,本系统还可以设置颜色的渐变角度,为了能够控制各种颜色在图形中所占的比例,所以设置了颜色偏移这个功能。 图43 图形填充界面 文件的存储与读取 使用Visual C++的AppWizar创建应用程序时,应用程序是从CWinApp、CFrameWnd、CDoument、CView,其中CDoument类是应用程序的文档类,负责装载和维护文档[9]。 本系统的文档类为CDrawDoc,图形文件的存储与读取功能就是在CDrawDoc类中实现的。 文件的存储。 保存图形实际上就是保存图形线条属性,填充属性,图形的大小,绘制角度以及在绘图区域的位置。 当保存的图形个数在1个以上时,可定义一个形状列表,通过重载OnSaveDocument()函数保存图形文件[9]。 文件的读取 ,所以在读取图形文件时,需要先调用XML解析器解析文件并创建树,通过重载OnOpenDocument()函数打开文件。 系统界面设计综合上述功能,该系统的整体界面如图52所示:图44 系统界面 菜单栏本系统的菜单栏如图53所示: 图45 菜单栏本系统中的菜单栏是AppWizard自动生成的,最主要的菜单项是文件菜单和视图菜单两项。 其中文件菜单的功能主要有:新建一个空白文档,打开文档,保存文档,打印,退出系统;视图菜单的功能主要是显示和隐藏工具栏和状态栏。 工具栏 在MFC中,工具栏的功能由类CToolBar实现。 工具栏资源和工具栏类CToolBar是工具栏的两个要素。 当创建一个文档类时,AppWizard会自动创建一个工具栏,这个工具栏包含一些常用按钮,如打开文件、存盘、打印等等。 本系统的工具栏如下图所示: 图46 工具栏创建一个新的文档,打开现有文件,保存当前活动文档, 图形剪切,这两个工具依次为复制和粘贴,选择工具, 钢笔工具 这六个工具都是用来绘制基本图形的,依次分别为矩形,椭圆,三角形,五角星,五边形,直线, 这三个工具是依次分别是图形填充和线条填充和插入图片。 状态栏 在MFC中,状态栏的功能由CStatusBar类实现。 状态栏实际上是一个小窗口,位于应用程序主窗口的底部,一般分为几个窗格,每个窗格显示不同的信息,主要用来反应软件当前操作功能和操作状态。 考虑到的实际需求,本系统的状态栏只有一个窗格,用来显示当前的操作状态。 状态栏如下图所示: 图47 状态栏当鼠标空闲时状态栏显示“就绪”,当鼠标工作时根据不同的操作显示不同的内容,例如:画矩形的时候会显示“矩形工具”,复制时显示“复制选定内容并将其放入剪贴板上”。 第五章 系统详细设计 类关系图 通过上一章节的分析设计,并根据各个功能模块之间的关系,可将本系统中的类划分为以下几个类,类之间的关系图如下图所示: ShapeShapeStyleSegmentHandlerSelectionSegmentCollectionTool 图51 类关系其中,Segment类是路径片段类,该类中定义了路径片段和路径片段的连接方式,路径片段有直线路径片段和曲线路径片段两种,连接方式有直角和半平滑两种。 SegmentCollection类则是路径片段的集合,本系统中是以链表的数据结构存放路径片断列表,路径片段的集合可构成形状。 Handler类就是操作手柄类,包括8个控制点小方块,控制点的位置以及判断鼠标是否在上面Tool类是绘图工具类,本系统中所有图形的绘制算法都在此类中,包括有直线、矩形、椭圆等本系统所能绘制的图形。 ShapeStyle类是图形线条属性类和填充属性类,线条属性有线条宽度、颜色和线型(实线、虚线、点线、点虚线);填充属性有填充方式(无填充、单色填充、纹理填充、渐变填充)、填充颜色透明度等。 Selection类是图形处理类,完成图形的平移、旋转、缩放和选中。 Shape类是图形的属性类,图形的属性包括图形的大小,在Doc上的位置,绘制角度等。 基本图形绘制 基本图形绘制的函数基础 本系统中,在绘制各个图形的时候用到了三个函数,分别为:(1) void MoveTo(Poin。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。