SVG 图形编辑器设计与实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SVG 图形编辑器设计与实现

SVG 图形编辑器设计与实现   摘 要:为了揭示SVG图形编辑器的实现原理,本文将讨论图形绘制、数据缓冲区储存和SVG语句的生成等3个模块的实现方法,给出SVG编辑器实现的基本流程。   关键词:ArrayList类;SVG图形编辑器;Element接口   作者简介: 邓伟民(1985―),男,广东佛山人,广东商学院华商学院教师,研究方向:计算机科学与技术。   中图分类号:TP391.4 文献标识码:A doi:10.3969/j.issn.1672-3309(x).2011.12.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、绘图程序实现    本绘图程序是运用JAVA高级程序编程语言编写的,因此开发程序之前必须对JAVA技术(特别是2D功能)有一个很好的理解。以下为绘图程序所涉及的图形概念描述:    模型―视图―控制器(model-view-controller ,简称MVC)体系结构,该系统结构使用面向对象的设计原理将应用程序模块化,使其成为数据组件、表现组件以及输出组件。数据组件维护原始应用程序的数据,表现组件常常提供应用程序数据的可视表现,输出组件处理来自用户的输入等等。    控制器实现了处理用户输入的逻辑。模型包含应用程序的数据,视图则生成模型数据的表现。当用户提供了一些输入时,控制器将根据给定的输入来修改模型(模型只包含原始的应用程序数据)。当模型改变时,它将变化通知给视图,于是视图可用改变后的数据更新其显示。字控制器中的视图可以一种特定的字体、合适的大小等属性将字符显示在屏幕上。    JAVA的Swing组件是MVC的一个变形,它将视图和控制器结合在一个对象中,即成为代理的对象。代理对象既提供模型的表现,同时也提供了接口用于改变模型。例如,每个JButton组件有一个相关的ButtonModel,JButton就是该ButtonModel的代理。ButtonModel对象维护状态信息,如是否按下这个JButton组件,是否激活,以及维护一个ActionListener的列表。JButton组件提供图形表现,同时也修改ButtonModel的状态(如用户按下JButton时)。    对于本绘图程序,先创建形状类的根接点MyShape类。MyShape类是一个抽象基类,其定义了形状实体的基本接口和所有形状的公共方法的默认实现。图画中的每个形状实体都以独立的对象存在,而且是MyShape类的扩展。MyShape类的子类有:MyLine(直线)类,MyRectangle(矩形)类,MyOval(椭圆)类,MyText(文本)类等。    3、处理用户输入机制    创建图形的基本输入设备是鼠标。当用户通过鼠标进行按下、拖动以及放下等一系列操作的时候,新的形状实体就可在图画中得到创建或者改变状态。对于不同类型的MyShape子类,对鼠标事件的处理有着不同的要求。这里定义了抽象类MyShapeController,定义了MyShapeController子类共同的基本功能,其子类在创建过程中加入了相对应的细节。该抽象类负责响应鼠标事件,使用户能够将形状实体加

文档评论(0)

130****9768 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档