首页 > 代码库 > mxGraph定位盲区图形到绘图区域中心位置
mxGraph定位盲区图形到绘图区域中心位置
往往在一个绘图区域会有很多个图形,如果通过右键拖动画布或者通过滚动条来查找,是一件很烦人的事情。下面我就给出解决这个问题的方案。
前提是有一个整个绘图区域的tree或者datagrid,我们需要选择直接要定位的图形cell。
首先我们需要一个mxGraph的全局对象,暂且就定义为ylEditor.ylCanvas吧。
接下来我们要定义一个查找图形cell的方法,只有通过这个方法,才能找到画布中我们想要的那个cell。
ylCommon.findCellById=function(id){ ylEditor.ylCanvas.selectAll(); var cells=ylEditor.ylCanvas.getSelectionCells(); ylEditor.ylCanvas.clearSelection(); for(var i=0;i<cells.length;i++){ if(cells[i].id==id){ return cells[i]; } if(cells[i].children.length>0){ for(var j=0;j<cells[i].children.length;j++){ var child=cells[i].children[j]; if(child.id==id){ return child; } } } } return null; }
然后定位图形cell的方法,直接给图形cell的id就可以了,先找到图形,然后选中这个图形,再计算一下坐标,最后定位。
ylCommon.selectCell=function(id){ var cell=ylCommon.findCellById('cell-'+id); if(cell){ ylEditor.ylCanvas.setSelectionCell(cell); var x=-cell.geometry.x+($('#canvas').width()-cell.geometry.width)/2; var y=-cell.geometry.y+($('#canvas').height()-cell.geometry.height)/2; ylEditor.ylCanvas.getView().setTranslate(x,y); }else{ alert('您选择的图形不在画布中!'); }}
在tree或者datagrid当中,选择要定位的对象,然后将对象的id传给selectCell方法就可以了,前提是这个id要能与画布中的图形的id匹配上。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。