2017-06-21 59 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函數內那是用來改變邊緣風格的。它並沒有被這裏的事件所激怒,而是需要刷新才能讓造型出現。樣式編輯就像這裏所示。 –