2017-06-01 1 views
0

J'ai un graphe qui remplace createComponents dans mxGraphComponent pour rendre chaque sommet JTable. Alors que je pensais que mxCellRenderer.create*Document ne pouvait pas le supporter, j'espérais que sauver une image avecExporter un graphe JGraphX ​​avec des composants vertex personnalisés vers une image

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

serait (bien sûr, maintenant que je regarde, il ne peut évidemment pas: il ne se mxGraph en entrée , pas le mxGraphComponent!). Y a-t-il un moyen de sauvegarder un graphique en tant qu'image, y compris les moteurs de rendu personnalisés?

Répondre

0

Cela a fonctionné pour mon cas d'utilisation

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); 
}