审计SVG 图形编辑器设计与实现

当前位置: 大雅查重 - 范文 更新时间:2024-03-01 版权:用户投稿原创标记本站原创
摘 要:为了揭示SVG图形编辑器的原理,将讨论图形绘制、数据缓冲区储存和SVG语句的生成等3个模块的策略会计专业论文,给出SVG编辑器的流程。
会计论文范文词:ArrayList类;SVG图形编辑器;Element接口
作者简介: 邓伟民(1985—),男,广东佛山人,广东商学院华商学院教师,研究方向:计算机科学与技术。
中图分类号:TP391.4 文献标识码:A doi:10.3969/j.issn.1672-3309(x).2011.1

2.60 文章编号:1672-3309(2011)12-142-03

SVG(Scalable Vector Graphic)是W3C组积开发的一种开放标准的文本式矢量图形标准语言,其具有莫大的优势,在业界将有一定的发展空间。,一些SVG的可视化编辑器已经陆续出现,SvgDeveloper,它是一款功能强大的SVG编辑软件,功能强大的绘制功能,绘制诸如圆形、矩形、星形等形状,也绘制文本、图像和自由曲线等复杂图形。同时,SvgDeveloper还了其他一些高级功能,更加的创建和管理SVG程序。下面简要说一下SVG图形编辑器的核心内容思想。

一、功能需求与设计

图形编辑器图形(直线、圆形、矩形文字等)绘制的机制,图形在创建后,相应机制,拖移操作,并且以SVG文件的形式输出。
整个SVG图形编辑器分为3个功能模块,每个模块之间的耦合性比较强。为图形绘制模块,是整个系统的组成,应用于人机交互;为数据缓存机制模块,用于绘图后,对图形的储存,为生成SVG文件所必要的信息了来源;为SVG语句构建,采集图形信息,构建出SVG语句。这3个模块功能上是独立的,但在实际中,它们的程序模块上是交集在一起的,是有机的统一体。

二、 程序的

1、绘图程序的功能简述

本绘图程序是图元库完成圆形、椭形、矩形直线等图形的绘制,并可对这一系列图形可视化调整操作,如移动、拖放、修改等。

2、绘图程序

本绘图程序是运用JA高级程序编程语言编写的,因此开发程序必须对JA技术(是2D功能)有很好的理解。为绘图程序所涉及的图形描述:
模型—视图—制约器(model-view-controller ,简称MVC)体系结构,该系统结构使用面向的设计原理将应用程序模块化,使其数据组件、表现组件输出组件。数据组件维护原始应用程序的数据,表现组件常常应用程序数据的可视表现,输出组件处理来自用户的输入等等。
制约器了处理用户输入的逻辑。模型应用程序的数据,视图则生成模型数据的表现。当用户了一些输入时,制约器将给定的输入来修改模型(模型只原始的应用程序数据)。当模型转变时,它将变化通知给视图,论文范文视图可用转变后的数据更新其。字制约器视图一种特定的字体、合适的大小等属性将字符在屏幕上。
JA的Swing组件是MVC的变形,它将视图和制约器在中,即的。既模型的表现,同时也了接口用于转变模型。,每个JButton组件有的ButtonModel,JButton该ButtonModel的。ButtonModel维护信息,如论文格式范文按下JButton组件,论文格式范文激活,维护ActionListener的列表。JButton组件图形表现,同时也修改ButtonModel的(如用户按下JButton时)。
对于本绘图程序,先创建形状类的根接点MyShape类。MyShape类是抽象基类,其定义了形状实体的接口和形状的公共策略会计专业论文的默认。图画每个形状实体都以独立的,是MyShape类的扩展。MyShape类的子类有:MyLine(直线)类,MyRectangle(矩形)类,MyOval(椭圆)类,MyText(文本)类等。

3、处理用户输入机制

创建图形的输入设备是鼠标。当用户鼠标按下、拖动放下等一系列操作的时候,新的形状实体就可在图画中创建转变。对于不同类型的MyShape子类,对鼠标事件的处理不同的要求。这里定义了抽象类MyShapeController,定义了MyShapeController子类的功能,其子类在创建中加入了相对应的细节。该抽象类负责响应鼠标事件,使用户将形状实体加入到图中。
在类MyShapeController中,创建MouseListener,监听mousePressedmouseReleased事件,当用户按下鼠标按键时,调用startShape策略会计专业论文开始在鼠标按下的位置画新的形状实体。当鼠标松开的时候,调用endShape策略会计专业论文来完成的形状实体的绘制。当用户拖动鼠标时,也可MouseMotionListener调用modifyShape策略会计专业论文来修改绘制的形状实体。类MyShapeController中,使用了MouseAdapter和MouseMotionAdaper的实例来响应MouseEvent。MouseAdapter类和MouseMotionAdaper类,适配器设计模式的例子,为了新的接口,使之能适应另的接口。

4、拖放制约处理机制

拖放制约处理机制,本编辑器DragAndDropController类的实例完成,用户可在图画内部和多文档界面的图画之间拖放特定的图形。DragAndDropController类3个接口来处理拖放操作:DragGestureListener、DragSourceListener和DropTargetListener。这些接口能使得DragAndDropController识别拖动的动作、DragSource事件和DropTarget事件。

5、图形信息的储存

本编辑器的输出是以SVG文件,所以必须对所绘制的图形的信息(类型,坐标等)科学的保存。
现代信息技术为图形信息的储存的手段是多元化的。总体来说分为两大类:静态结构储存和动态结构储存。图块的储存信息是不等的,且当程序工作时,大图形图块的个数硕士论文不确定的,采取静态储存,就得先确定大结构数组去保存图形。但图形的图块比较少的情况下,就大大了系统的资源,造成不必要的,所以本编辑系统的图形信息储存采取的是动态储存结构。在本储存的模块中引入了ArrayList类,它是特殊的数组。ArrayList类具有优点:(1)支持自动转变大小的功能;(2)灵活的插入元素;(3)灵活的删除元素。
ArrayList类的策略会计专业论文与属性:
(1)构造器。ArrayList了3个构造器:public ArrayList( ), 默认的构造器,将会以默认(16)的大小来初始化内部的数组;public ArrayList(ICollection,用ICollection来构造,并将该集合的元素添加到ArrayList。public ArrayList(int),用指定的大小来初始化内部的数组。

','邓伟民');">
(2)IsSynchronized属性和ArrayList.Synchronized策略会计专业论文。IsSynchronized属性指示的ArrayList实例论文格式范文支持线程同步,而ArrayList.Synchronized静态策略会计专业论文则会返回ArrayList的线程同步的封装。使用非线程同步的实例,那么在多线程访问的时候,手动调用lock来保持线程同步;当ArrayList为非线程包装的时候,SyncRoot属性其实它,为了ICollection的SyncRoot定义,这里还是使用SyncRoot来保持源代码的规范性{list.Add(“Add a Item”); }使用ArrayList.Synchronized策略会计专业论文返回的实例,那么用考虑线程同步的【会计论文】,实例本身线程安全的,实际上ArrayList内部了保证线程同步的内部类,ArrayList.Synchronized返回的类的实例,它里面的每个属性用了lock会计论文范文字来保证线程同步。
,使用策略会计专业论文(ArrayList.Synchronized)并保证枚举的同步,,线程正在删除或添加集合项,而另线程同时枚举,这时枚举将会抛出异常。所以,在枚举的时候,你必须明确使用SyncRoot锁定集合。

6、图形信息的

当保shapes( ArrayList的,用于保存MyShape)里的图形,则涉及到的。在这里可引入Iterator类,它了ArrayList所储存元素的接口。
Iterator(迭代器)模式又称Cursor(游标)模式,用于一种策略会计专业论文访问聚合中元素,而又不需暴露该的内部表示。Iterator模式是运用于聚合的一种模式,运用该模式,使得在不知道内部表示的情况下,一定(由iterator的策略会计专业论文)访问聚合元素。
Iterator模式有如下的作用:
(1)它支持以不同的方式遍历聚合,复杂的聚合可用多种方式遍历,如二叉树的遍历,前序、中序或后序遍历。迭代器模式使得转变遍历算法变得很,仅需用不同的迭代器的实例代替原先的实例即可,也自行定义迭代器的子类以支持新的遍历,在遍历中增加一些逻辑,如有条件的遍历等。
(2)迭代器简化了聚合的接口,有了迭代器的遍历接口,聚合本身就类似的遍历接口了,这样就简化了聚合的接口。
(3)在同聚合上有多个遍历,每个迭代器保持它的遍历,因此你同时多个遍历。
(4)Iterator模式为遍历不同的聚合结构(需拥有相同的基类)统一的接口,即支持多态迭代。简单说来,迭代器模式硕士论文Delegate原则的应用,它将对集合遍历的功能封装成独立的Iterator,不但简化了集合的接口,也使得修改、增加遍历方式变得简单。
Iterator类的iterator可shapes所储存的,但其的信息只是图形(如MyLine、MyOval、MyText和MyRectangle),并论文格式范文所的元素信息(如line 、x1、fill、ellipse等),所以再由MyShape的策略会计专业论文getXML再提取信息ArrayListshapes里储存的提取,但对于拖动操作来说,只抽取被选图形操作,这样Iterator类的iterator功能要求。在本模块中引入ListIterator类,它是Iterator类的子集,继承了Iterator类的的策略会计专业论文。

7、SVG语句的生成

SVG图形编辑器,SVG代码的生成是至关的模块。在这一模块中,引入了Element接口。Element 接口表示 HTML 或 XML 文档元素。元素可能有与它们的属性; Element 接口继承自 Node,所以使用一般 Node 接口属性 attributes 来元素属性的集合。Element 接口上有名称 Attr 或名称属性值的策略会计专业论文。SVG是一种基于 XML 的用来描述二维矢量图形和矢量 /点阵混合图形的置标语言,在 XML 中(其属性值可能实体引用), Attr 来检查表示属性值的可能复杂的子树。
三、结语
本程序动态数据存储技术,使得SVG图形编辑器的可用性效率更高。它是一种单机结构,在本地机器上运行,不服务器的支持,运行速度快,当然这一种结构的编辑器缺乏资源共享性。在可预见的未来,将会出现基于B/S结构的SVG网络编辑图形系统的出现。
文献:
吴其庆.Ja模块设计实用经典[M].冶金工业出版社,2004.
雍俊海.Ja程序设计[M].清华大学出版社,2004.
[3] 阎宏.Ja 与模式[M].电子工业出版社,2002.
[4] 张曜、郭立山、游泳明.Ja 函数实用手册[M].冶金工业出版社,2003.
[5] 甘早斌、李志欣、彭彬.基于SVG的矢量图形编辑系统的数据描述模型[J].计算机工程与设计,2005,(01).
[6] 甘早斌、李志欣、彭斌.矢量图形编辑系统的数据模型[J].计算机工程与科学,2005,27,(06).
[7] 宋善德、熊展志、李卫国、唐咸峰.基于SVG的矢量图形编辑器的设计与[J].计算机工程与科学,2003,(02).

[1]','邓伟民');">