mxgraph-官方demo(1)

东西学得杂乱无章..没有一个可以深入的..很无奈,更无奈的是这东西基本没有文档..没办法工作要用到..也好,看看大牛们怎么在web里实际应用<图论>的.

mxgraph的第一天,加油..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="../mxGraph-1.7.1.6.debug.js"></script>
</head>
<body>
<div id="ct" style="overflow:hidden;width:321px;height:241px;background:url('editors/images/grid.gif');cursor:default;"></div>
</body>
<script type="text/javascript">
    (function main(container) {
	    if(!mxClient.isBrowserSupported()) {
		    alert('1');
		} else {
			//container承装graph的容器
			//graph相当于画布
		    var graph = new mxGraph(container);
			graph.setHtmlLabels(true);
			
			var keyHandler = new mxKeyHandler(graph);
			//辅助方法,得到鼠标事件选定的是哪个value
			var getFieldnameFormEvent = function(cell, evt) {
			    if (evt != null) {
				    //将鼠标相对于游览器视口的坐标转换为相对于graph容器的坐标
					var point = mxUtils.convertPoint(graph.container, evt.clientX, evt.clientY)
					var state = graph.getView().getState(cell);
					if (state != null) {
					    //减去cell的x,y
						point.x -= state.x;
						point.y -= state.y;
					    //鼠标事件发生在大于cell高度一半的地方,选定第二个值
					    if (point.y > state.height / 2) {
					        return 'second';
					    }
				    }
			    }
			    return 'first';
		    };
		//@Override
		graph.getLabel = function(cell) {
		   var table = document.createElement('table');
					table.style.height = '100%';
					table.style.width = '100%';
					
					var body = document.createElement('tbody');
					var tr1 = document.createElement('tr');
					var td1 = document.createElement('td');
					td1.style.fontSize = '12px';
					//写入
					mxUtils.write(td1, cell.value.first);
					
					var tr2 = document.createElement('tr');
					var td2 = document.createElement('td');
					td2.style.fontSize = '12px';
					mxUtils.write(td2, cell.value.second);
					
					tr1.appendChild(td1);
					tr2.appendChild(td2);
					body.appendChild(tr1);
					body.appendChild(tr2);
					table.appendChild(body);
					
					return table;
		};
		//@Override
		graph.getEditingValue = function(cell, evt) {
		    evt.fieldname = getFieldnameFormEvent(cell, evt);
			
			return cell.value[evt.fieldname] || '';
		};
		//@Override
		graph.labelChanged = function(cell, newValue, trigger) {
		    var name = (trigger != null) ? trigger.fieldname : null;
			if (name != null) {
			    //不要再原值上修改
				var value = mxUtils.clone(cell.value);
				value[name] = newValue;
				newValue = value;
				
				mxGraph.prototype.labelChanged.apply(this, arguments);
			}
		};
		
		var value = {
		    first: '第一个值',
			second: '第二个值'
		};
		
		var parent = graph.getDefaultParent();
		graph.getModel().beginUpdate();
		try {
			//插入一个顶点
		    var v1 = graph.insertVertex(parent, null, value, 100, 60, 120, 80, 'overflow=fill;');
		} finally {
			//更新视图
		    graph.getModel().endUpdate();
		}
	}
	})(document.getElementById('ct'));
</script>
</html>


mxGraph 是一个基于 JavaScript 的开源图形绘制框架,可以用于创建各种类型的图形,包括流程图、组织结构图、UML 图、网络拓扑图等。 下面是一个简单的 mxGraph 入门示例: 1. 在 HTML 文件中引入 mxGraph 的 JavaScript 文件: ```html <!DOCTYPE html> <html> <head> <title>mxGraph Demo</title> <script src="https://unpkg.com/mxgraph@4.1.0/dist/mxgraph.js"></script> </head> <body> <div id="graphContainer" style="width:400px;height:300px;"></div> <script> // 在这里编写绘图代码 </script> </body> </html> ``` 2. 在 JavaScript 代码中创建一个 mxGraph 实例: ```javascript var container = document.getElementById('graphContainer'); var graph = new mxGraph(container); ``` 3. 创建图形元素: ```javascript // 创建一个矩形 var rect = new mxCell('Rectangle', new mxGeometry(0, 0, 80, 40), 'shape=rectangle'); rect.vertex = true; // 添加矩形到图形中 graph.getModel().beginUpdate(); try { graph.addCell(rect); } finally { graph.getModel().endUpdate(); } ``` 4. 连接两个图形元素: ```javascript // 创建两个矩形 var rect1 = new mxCell('Rectangle 1', new mxGeometry(0, 0, 80, 40), 'shape=rectangle'); var rect2 = new mxCell('Rectangle 2', new mxGeometry(0, 0, 80, 40), 'shape=rectangle'); rect1.vertex = true; rect2.vertex = true; // 添加矩形到图形中 graph.getModel().beginUpdate(); try { var parent = graph.getDefaultParent(); graph.addCell(rect1, parent); graph.addCell(rect2, parent); // 连接两个矩形 var edge = graph.insertEdge(parent, null, '', rect1, rect2); } finally { graph.getModel().endUpdate(); } ``` 以上示例只是 mxGraph 的基本用法,mxGraph 还提供了丰富的 API,可以实现更多功能。你可以查看官方文档来了解更多信息:https://jgraph.github.io/mxgraph/docs/js-api/files/index-txt.html
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值