mxgraph说明文档
更新时间:2023-09-11 23:15:01 阅读量: 教育文库 文档下载
1 mxgraph介绍 1.1 基本概念
mxGraph 是一个 JS 绘图组件适用于需要在网页中设计/编辑流程图、图表、网络图和普通图形的 Web 应用程序。mxgraph 下载包中包括用javascript 写的前端程序,也包括多个和后端程序(java/C#等等)集成的例子。
mxgraph支持拖动和克隆细胞,重新调整和改造, 连接和断开,拖动和下降,从外部来源,编辑 细胞中的标签和更多。
mxGraph客户端是一个图形组件,并提供和网页集成的接口。客户端需要一个Web服务器提供所需的文件,也可以在本地文件系统上运行。后台可用于集成到现有存在的服务器所支持的语言中。
涉及的一些基本概念:
图:由顶点,也称为节点,以及边(节点之间的连接线)组成。顶点可以是图形、图像、矢量绘图、动画以及几乎所有可以在浏览器中 操作的图形。
交互:使用mxGraph的应用程序中,通过WEB应用程序的GUI改变图形模式。 mxGraph支持拖动、复制图元、重新调整大小、重新构造,连接和断开,从外部源的拖放和删除,编辑图元标签中的位置等等。将交互信息放在客户端,通过javascript实现
布局:图形图元可以布置在一个简单的应用程序的任何地方,包括在彼此顶部。图元可通过边是彼此相互联系。mxGraph支持树、流
向和层次的布局,来满足大多数布局的需求。
2 mxgraph使用 2.1 mxgraph文档
目前官方的文档是需要付费的,文档中包括服务端代码,客户端功能以及介绍。文档的结构表:
/doc /dotnet /php /java /javascript /javascript/examples index.html
文档根目录,保持此用户手册 .NET服务器端代码 php代码 Java服务器端代码 JavaScript客户端功能 mxGraph的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.html 4. 引入库文件。用以下代码来加载库文件。
这部分代码的作用主要的是在容器里加入两个节点。页面效果:
后面将对js部分做详细介绍。
2.3 mxgraph库
mxgraph对节点,边等对象提供了一套完整的封装,我们可以很容易根据提供的api,来得到图的信息以及节点之间的关系。mxgraph的底层是通过xml来存取图的信息。除此之外,mxgraph还提供了一套编辑的接口,我们可以很容易地对节点进行删除、复制等操作,添加样式以及编辑元素的信息。mxgraph也有一套自己的事件响应机制,通过使用这些事件相应,我们能方便地完成自己的一些操作,比如双击事件,右键菜单。
mxgraph也有对应语言的面向对象范式来构建的各种方式,比如:继承,构造函数,添加新的函数等。
原型重定义
mxgraph的类可以重新定义,也可以作为函数直接使用。例如:mxEditor是一个函数,mxEditor.prototype是创建对象原型的
mxEditor功能。
对于子类,父类必须提供一个无参数的构造或处理要么是一个不带参数调用。此外,也输得构造领域延伸后,必须重新界定原型。例如:在mxGraph超类mxEventSource,这是在Javascript中,代表“继承”的原型分配到一个超累的实例。
mxEditor.prototype = new mxEventSource(); 重新构造和现场使用:
mxEditor.prototype.constructor = mxEditor;
后者规则适用的对象类型,可以通过使用它的名称的构造来检索。 函数
为了增加新的功能和子类,可以增加新的函数,来对mxgraph的功能进行扩展。比如:
mxGraph.prototype.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的常用api
beginUpdate() - 启动一个事务或子事务处理。 endUpdate() - 完成一个事务或子事务处理。
当需要在beginUpdate和endUpdate中来插入节点和连线(更新图形)。endUpdate应放在finally-block中以确保endUpdate一直执行。但beginUpdate不能在try-block中,这样如果beginUpdate失败那么endupdate永远不会执行。插入节点示例:
//为插入节点获得默认的父节点。 //这通常是根节点的第一个子节点
var parent = graph.getDefaultParent(); // Adds cells to the model in a single step //在单独的一步中添加cell model.beginUpdate(); try {
var v1 = graph.insertVertex(parent, null, 'Hello,', 20, 20, 80, 30); var v2 = graph.insertVertex(parent, null, 'World!', 200, 150, 80, 30); var e1 = graph.insertEdge(parent, null, '', v1, v2); }
finally {
//Updates the display //更新显示 model.endUpdate(); }
2.3.2.1 节点
插入节点使用的是insertVertex()方法。 它的原型为:
mxGraph.prototype.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, \
//椭圆 shape=elipse 定义椭圆 perimeter=ellipsePerimeter 让连线的箭头或起点触到边缘
graph.insertVertex(parent, null, '椭圆', 550, 50, 150, 150, \
//三角形,shape=triangl定义三角形,perimeter=ellipsePerimeter 让连线的箭头或起点触到边缘 direction=south 让三角形倒立
graph.insertVertex(parent, null, '三角形', 800, 50, 150, 150, \//菱形shape=rhombus 定义菱形
graph.insertVertex(parent, null, '菱形', 1050, 50, 150, 150, \//柱形 shape=cylinder 定义柱形
graph.insertVertex(parent, null, '柱形', 1300, 50, 150, 150, \//人 shape=actor 定义演员
graph.insertVertex(parent, null, '演员', 50, 300, 150, 150, \// 云
graph.insertVertex(parent, null, '云', 300, 300, 150, 150, \
可以设置graph图中的节点是否可拖拽,编辑。
// 开启可以拖拽建立关系 graph.setConnectable(true); // 开启方块上的文字编辑功能 graph.setCellsEditable(false); // 启用对齐线帮助定位
mxGraphHandler.prototype.guidesEnabled = true; // 选择基本元素开启 graph.setEnabled(true);
正在阅读:
mxgraph说明文档09-11
骂人超难听的话02-10
1.毕业论文(设计)任务书04-15
游张家界作文600字06-22
第16课世界经济的“全球化07-19
甘肃省兰州市2017年中考数学试题(含答案) - 图文02-28
利用SWOT分析职业生涯规划07-21
传热学第4章 导热问题的数值解法05-30
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- mxgraph
- 说明
- 文档
- 部编版积累复习测试二年级下学期小学语文一单元模拟试卷A卷复习练习
- 推进惠州城乡经济社会统筹发展争当全国共享经济排头兵
- 甲醇钠甲醇溶液安全技术说明书(msds)
- 2019-2020学年高中语文10祭文祭十二郎文教师用书苏教版选修唐宋八大家散文蚜
- 人教版三年级《集合》评课稿
- 2015年广东省技能竞赛教师组“单片机控制装置安装与调试”竞赛规程剖析
- 关于高职创新人才培养模式的探讨
- 黑马必抓通达信指标公式源码
- 学年论文会计专题
- 72元素作业指导
- 2016-2021年U型锁市场前景预测及投资规划分析报告(目录)
- 产权经典案例
- 2015年医师定期考核暨三基试题
- 小儿支原体肺炎误诊肺结核30例分析
- 六年级语文期中质量调研试卷
- 房地产测绘实习报告
- MACSV系统知识串讲
- 暴强Dijkstra算法求任意两点间最短路径(matlab程序)
- 企业执行力存在问题及对策研究
- 国内纳米界牛人及其group简介