已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 mxgraph介绍1.1 基本概念mxGraph 是一个 JS 绘图组件适用于需要在网页中设计/编辑流程图、图表、网络图和普通图形的 Web 应用程序。mxgraph 下载包中包括用javascript 写的前端程序,也包括多个和后端程序(java/C#等等)集成的例子。mxgraph支持拖动和克隆细胞,重新调整和改造, 连接和断开,拖动和下降,从外部来源,编辑 细胞中的标签和更多。mxGraph客户端是一个图形组件,并提供和网页集成的接口。客户端需要一个Web服务器提供所需的文件,也可以在本地文件系统上运行。后台可用于集成到现有存在的服务器所支持的语言中。涉及的一些基本概念:图:由顶点,也称为节点,以及边(节点之间的连接线)组成。顶点可以是图形、图像、矢量绘图、动画以及几乎所有可以在浏览器中 操作的图形。交互:使用mxGraph的应用程序中,通过WEB应用程序的GUI改变图形模式。 mxGraph支持拖动、复制图元、重新调整大小、重新构造,连接和断开,从外部源的拖放和删除,编辑图元标签中的位置等等。将交互信息放在客户端,通过javascript实现布局:图形图元可以布置在一个简单的应用程序的任何地方,包括在彼此顶部。图元可通过边是彼此相互联系。mxGraph支持树、流向和层次的布局,来满足大多数布局的需求。2mxgraph使用2.1 mxgraph文档目前官方的文档是需要付费的,文档中包括服务端代码,客户端功能以及介绍。文档的结构表:/doc文档根目录,保持此用户手册/dotnet.NET服务器端代码/phpphp代码/javaJava服务器端代码/javascriptJavaScript客户端功能/javascript/examplesmxGraph的HTML演示例子index.html开发库的基础介绍我们现在只使用mxgraph的客户端功能,也就是只关注javascript部分。2.2 使用说明官方文档/javascript/examples下的HTML演示例子,可以通过浏览器直接打开查看效果。把mxgraph应用到我们的项目中,首先需要把js源文件,配置文件,图片文件等加进去。具体步骤:1. 新建文件夹,比如:mxgraph。2. 把src,editors,images等文件夹放到相应的目录下。src文件下包括一些配置文件,图标,基础的样式文件,以及mxClient.js。mxClient.js是mxgraph的javascript部分的核心,提供了在绘图时需要用到的api的,src一般放到HTML文件的上一级目录。editors里包括图片,一些xml配置文件等。3. 新建html文件,比如:test.html4. 引入库文件。用以下代码来加载库文件。 mxBasePath = ./src/;mxBasePath变量用来定义库资源的目录。这个变量必须在加载库前就定义好。它的值跟src文件夹的路径有关。所要加载的mxgraph相关库文件只有mxClient.js。5. 编写body体。mxgraph是将html的页面元素当做容器。所以HTML的body里一般是一些div来组成。通过js来给这些容器添加各种元素。比如:6. 编写js。使用mxgraph最主要的工作是写js,下面给一个简单的例子。var container = document.getElementById(main);container.style.background = url(editors/images/grid.gif);var graph = new mxGraph(container);var parent = graph.getDefaultParent();/ 画方块graph.insertVertex(parent, null, Hello, 50, 50, 80, 30);graph.insertVertex(parent, null, World, 200, 50, 80, 30);这部分代码的作用主要的是在容器里加入两个节点。页面效果:后面将对js部分做详细介绍。2.3 mxgraph库mxgraph对节点,边等对象提供了一套完整的封装,我们可以很容易根据提供的api,来得到图的信息以及节点之间的关系。mxgraph的底层是通过xml来存取图的信息。除此之外,mxgraph还提供了一套编辑的接口,我们可以很容易地对节点进行删除、复制等操作,添加样式以及编辑元素的信息。mxgraph也有一套自己的事件响应机制,通过使用这些事件相应,我们能方便地完成自己的一些操作,比如双击事件,右键菜单。mxgraph也有对应语言的面向对象范式来构建的各种方式,比如:继承,构造函数,添加新的函数等。原型重定义mxgraph的类可以重新定义,也可以作为函数直接使用。例如:mxEditor是一个函数,mxEtotype是创建对象原型的mxEditor功能。对于子类,父类必须提供一个无参数的构造或处理要么是一个不带参数调用。此外,也输得构造领域延伸后,必须重新界定原型。例如:在mxGraph超类mxEventSource,这是在Javascript中,代表“继承”的原型分配到一个超累的实例。mxEtotype = new mxEventSource();重新构造和现场使用:mxEtotype.constructor = mxEditor;后者规则适用的对象类型,可以通过使用它的名称的构造来检索。函数为了增加新的功能和子类,可以增加新的函数,来对mxgraph的功能进行扩展。比如:mxGtotype.getXml = function();这跟库自身提供函数功能是一样的,可以通过实体直接调用getXml方法。2.3.1 检查浏览器建议在编码前先检查浏览器,如果浏览器不支持就能在此显示错误信息。具体的代码如下:function main(container) / Checks if the browser is supported/检查浏览器是否支持 if (!mxClient.isBrowserSupported() / Displays an error message if the browser is not supported./如果浏览器不支持,则显示错误信息 mxUtils.error(Browser is not supported!, 200, false); else .2.3.2 graph图mxgraph使用的是MVC模式,它的节点,线等的实现,以及交互是通过graph图模型来实现的。模型描述了图形结构的核心,被称为mxGraphModel,可以在model包中发现。mxGraphModel是基本的对象, 它存储着图形的数据结构。另外,对图形结构的添加,更改和清除是通过图模型API来完成的。该模型还提供了方法来确定图形的结构,以及提供方法来设置,如能见度、分组和样式的视觉状态。虽然对于模型进行的处理是被存储在模型上的。在真正的使用中需要通过容器来构建具体的图。var model = new mxGraphModel();/创建一个空的模型var graph = new mxGraph(container,model);/得到具体的图也可以通过具体的图获得模型。var model =graph.getModel();如果你希望graph图只读,可用graph.setEnabed(false).mxgraph也有自己的样式库,视图库等。Graph图api的核心类图如下,其他类都是辅助的。mxGraphModel的常用apibeginUpdate()- 启动一个事务或子事务处理。endUpdate()- 完成一个事务或子事务处理。当需要在beginUpdate和endUpdate中来插入节点和连线(更新图形)。endUpdate应放在finally-block中以确保endUpdate一直执行。但beginUpdate不能在try-block中,这样如果beginUpdate失败那么endupdate永远不会执行。插入节点示例:/为插入节点获得默认的父节点。/这通常是根节点的第一个子节点varparent=graph.getDefaultParent();/Addscellstothemodelinasinglestep/在单独的一步中添加cellmodel.beginUpdate();try varv1=graph.insertVertex(parent,null,Hello,20,20,80,30);varv2=graph.insertVertex(parent,null,World!,200,150,80,30);vare1=graph.insertEdge(parent,null,v1,v2);finally /Updatesthedisplay/更新显示model.endUpdate(); 节点插入节点使用的是insertVertex()方法。它的原型为:mxGtotype.insertVertex=function(parent,id,value,x,y,width,height,style,relative)需要传入的参数有父节点,值,位置坐标,长宽,其他可选。Style是可选的,用于设置节点的样式。可以设置多种形状的节点。/方块,默认的形状是方块graph.insertVertex(parent, null, 矩形, 50, 50, 150, 150);/圆角矩形,shape=rounded 定义圆角 , arcSize=20 定义圆角弧度graph.insertVertex(parent, null, 圆角矩形, 300, 50, 150, 150, rounded=true;perimeter=ellipsePerimeter;arcSize=20;);/椭圆 shape=elipse 定义椭圆 perimeter=ellipsePerimeter 让连线的箭头或起点触到边缘graph.insertVertex(parent, null, 椭圆, 550, 50, 150, 150, shape=ellipse;perimeter=ellipsePerimeter;);/三角形,shape=triangl定义三角形,perimeter=ellipsePerimeter 让连线的箭头或起点触到边缘 direction=south 让三角形倒立graph.insertVertex(parent, null, 三角形, 800, 50, 150, 150, shape=triangle;perimeter=ellipsePerimeter;direction=south;);/菱形shape=rhombus 定义菱形graph.insertVertex(parent, null, 菱形, 1050, 50, 150, 150, shape=rhombus;perimeter=ellipsePerimeter;);/柱形 shape=cylinder 定义柱形graph.insertVertex(parent, null, 柱形, 1300, 50, 150, 150, shape=cylinder;perimeter=ellipsePerimeter;);/人 shape=actor 定义演员graph.insertVertex(parent, null, 演员, 50, 300, 150, 150, shape=actor;perimeter=ellipsePerimeter;);/ 云graph.insertVertex(parent, null, 云
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 互联网医疗与患者隐私保护
- 阿里三的姑娘课件
- 互联网医疗与医疗服务质量提升
- 儿科实践线上课程设计
- 关于课程设计评分
- 专科护理团队建设与培训
- 中班语言标准教案《会爆炸的苹果》
- 停电应急预案(集锦)
- 护理技能的实践应用
- 亚马逊电商英语课程设计
- 产品质量问题处理及反馈模板
- 2025年秋新教科版三年级上册科学全册知识点(新教材 )
- DB11-T 2209-2023 城市道路慢行系统、绿道与滨水慢行路融合规划设计标准
- 工程勘察设计收费标准
- 《区域数字化专病管理中心建设指南》
- 2025国家应急管理部所属单位第二批次招聘1人模拟试卷及一套参考答案详解
- 2025年秋统编版(2024)小学语文三年级上册第五单元模拟测试卷及答案
- 钢结构防火涂料应用技术规程TCECS 24-2020
- 2025年中国工业级小苏打行业市场分析及投资价值评估前景预测报告
- 2025年共青团团课考试题库(含答案)
- 家具生产工艺流程标准手册
评论
0/150
提交评论