MxGraph - 改变mxCell的位置和大小

今天是被mxGraph的mxOutline打击到的一天。不过还好,加班解决这个小问题找回一点点自信。

项目中有一个操作:
选中一个mxell 然后改变其显示的内容,同时需要cell的宽度随着内容改变,达到宽度自适应的效果。

改变cell宽度这个操作用了很多方法都没有达到效果,比如有些论坛提到的:

	this.graph.updateCellSize(cell, true);
	var geom = cell.getGeometry();
	geom.width = geom.width > width ? geom.width : width;

使用这个方法,无论给geom.width设置多少。cell的宽度变是变了,但是都固定的一个值,和设置的值并不一样。

只能在文档中找各种setsizegeometry相关的方法,终于找到了**setGeometry()**这个方法,参照文档中这个方法的示例代码,完美解决了问题。

	// activeStep 为从graph中获取到的图形对象,里面包含需要改变的mxCell
	const { mxCell } = activeStep;
	var geo = graph.getCellGeometry(mxCell);
	geo = geo.clone();
	geo.width = activeStep.activity.name.length * 20 + 50 + 20;
	graph.getModel().setGeometry(mxCell, geo);

这种找了大半天终于找到需要的方法然后完美解决问题的操作也太过瘾了八,大概这就是钻研的魅力吧;

你可能感兴趣的:(mxGraph)