2017-06-01 6 views
0

Ich habe ein Diagramm, das createComponents in mxGraphComponent überschreibt, um jeden Scheitelpunkt als JTable darzustellen. Während ich erwartete, dass mxCellRenderer.create*Document nicht damit umgehen konnte, hoffte ich, dass mitExportieren eines JGraphX-Diagramms mit benutzerdefinierten Scheitelpunktkomponenten in ein Bild

auf ein Bild zu speichern
BufferedImage image = mxCellRenderer.createBufferedImage(graphComponent.getGraph(), null, 1.0, null, graphComponent.isAntiAlias(), null); 
ImageIO.write(image, "PNG", new File("C:\\Temp\\graph.png")); 

würde (natürlich jetzt, dass ich es sehe, kann es natürlich nicht: es wird nur mxGraph als Eingabe , nicht die mxGraphComponent!). Gibt es eine Möglichkeit, ein Diagramm als Bild mit den benutzerdefinierten Renderern zu speichern?

Antwort

0

Dieser arbeitete für meinen Anwendungsfall

JViewport viewport = graphComponent.getViewport(); 
Color savedBackground = viewport.getBackground(); 
viewport.setBackground(new Color(0, 0, 0, 0)); 
try { 
    Dimension size = viewport.getPreferredSize(); 
    BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_ARGB); 
    Graphics2D g = image.createGraphics(); 
    viewport.printAll(g); 
    g.dispose(); 
    try { 
     ImageIO.write(image, "png", target.getFile()); 
    } catch (IOException e1) { 
     NotificationsUtil.showError("Failed to save image", e1); 
    } 
} finally { 
    viewport.setBackground(savedBackground); 
} 
Verwandte Themen