2017-05-10 1 views

Antwort

2

Sie könnten ein Beispiel Cytoscape ‚s Canvas-Element und seinen Kontext in der folgenden Art und Weise ...

var canvas = document.querySelector('canvas[data-id="layer2-node"]'); 
var context = canvas.getContext('2d'); 

Hier erwerben, das zeigt, wie Sie den Kontext verwenden könnten um etwas auf die Leinwand zu zeichnen ...

var cy = cytoscape({ 
 
    container: document.getElementById('cy'), 
 
    elements: [ 
 
     { data: { id: 'a' } }, 
 
     { data: { id: 'b' } }, 
 
     { 
 
      data: { 
 
       id: 'ab', 
 
       source: 'a', 
 
       target: 'b' 
 
      } 
 
     } 
 
    ] 
 
}); 
 

 
var canvas = document.querySelector('canvas[data-id="layer2-node"]'); 
 
var context = canvas.getContext('2d'); 
 

 
// draw rectangle using general canvas method 
 
function draw() { 
 
    context.fillRect(canvas.width/2.1, 60, 30, 30); 
 
    requestAnimationFrame(draw); 
 
} 
 
draw();
<script src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.1.0/cytoscape.min.js"></script> 
 
<div id="cy" style="width: 100%; height: 100%; position: absolute; top: 0px; left: 0px;"></div>

+0

Vielen Dank! Das hilft. – Aravind

+0

Dies wird nicht empfohlen und es wird keine stabile Lösung sein. Wenn Sie in Ihrer App Affe-Patch-ähnliche Dinge erledigen und die genaue Version von Cytoscape, die Sie verwenden, sperren und niemals aktualisieren, dann könnte diese Lösung in Ordnung sein. Keine der Annahmen, die der obige Code trifft, sind dokumentiert/stabil und sie könnten sich jederzeit ändern --- sogar eine Patch-Veröffentlichung. – maxkfranz

1

Sie sollten nicht versuchen, Cytoscapes Leinwand zu greifen. Cytoscape verwendet aus Leistungsgründen mehrere Leinwände und Sie können nicht garantieren, welche Art von Kontext gültig ist. Es kann context2d verwenden oder es kann webgl für die Leistung verwenden. Selbst wenn ein context2d verwendet wird, können Sie nicht verfolgen, wann oder welche Statusänderungen (z. B. Transformationen) auf der Zeichenfläche stattgefunden haben. Und indem Sie Ihre eigenen Änderungen vornehmen, können Sie Annahmen brechen, die Cytoscape getroffen hat.

Wenn Sie Overlay-Inhalte möchten, sollten Sie Ihre eigene Overlay-Leinwand erstellen. Im Allgemeinen sollten Sie dom-Elemente oder js-Objekte, die zu einer Lib gehören, nicht außerhalb der öffentlichen/dokumentierten API ändern.

1

Nach den Empfehlungen von @maxkfanz (Cytoscape dev) entwickle ich eine leichtgewichtige Cytoscape.js-Erweiterung namens , die eine Zeichenfläche über und/oder unter einem Diagramm erstellt. Es ermöglicht die volle Flexibilität, nach der Sie suchen.

Preview

Wenn Sie interessiert sind, überprüfen Sie die readme out!

Verwandte Themen