2017-06-21 104 views
2

我试图在连接时更改边缘的样式。样式由依赖于源或目标顶点的逻辑设置。我可以通过添加一个连接监听器,并使用mxCell.setStyle改变风格就好:如何更改连接时的边缘样式,而不更改连接点

graph.connectionHandler.addListener(mxEvent.CONNECT, function (sender, evt) 
{ 
    var edge = evt.getProperty('cell'); 
    edge.setStyle("...");   
} 

虽然这设置样式为我指定,由于某种原因,它改变目标顶点的连接点。例如,如果将它拖到目标顶点的9:00,在设置样式后,它会多次将连接点移动到目标顶点的6:00。

回答

5

好几个小时后,它终于明白了我的新边缘的样式包含连接点的信息,所以你不能只是取代它。我决定将我希望与同时施加于边缘的默认样式设置样式:

graph.connectionHandler.addListener(mxEvent.CONNECT, function (sender, evt){ 
    var edge = evt.getProperty('cell'); 
    var style = graph.getCellStyle(edge); //style is in object form 
    var newStyle = graph.stylesheet.getCellStyle("edgeStyle=orthogonalEdgeStyle;html=1;rounded=1;jettySize=auto;orthogonalLoop=1;strokeColor=#FFCC00;strokeWidth=4;", style); //Method will merge styles into a new style object. We must translate to string from here 
    var array = []; 
     for (var prop in newStyle) 
      array.push(prop + "=" + newStyle[prop]); 
     edge.style = array.join(';'); 
} 
+0

还需要增加:''this.editor.graph.refresh(边缘);''EditorUI.js函数内那是用来改变边缘风格的。它并没有被这里的事件所激怒,而是需要刷新才能让造型出现。样式编辑就像这里所示。 –