View Full Version : paintComponent
terence_81
18-01-2007, 18:22
Salve,
sto programmando con le swing ed ho un disegno fatto con il paintComponent su un pannello. Ora vorrei sapere come posso salvare (tramite un bottone o dal menù che ho già creato) l'immagine disegnata.
Dipende da cosa intendi per disegno. Supponiamo che sia un disegno vettoriale, cioè nel paintComponent richiami metodi che disegnano un'immagine a colpi di draw e fill Shape. In questo caso, per salvare l'immagine prima crei un buffer che abbia le stesse dimensioni del componente:
Insets margins = component.getInsets();
int width = component.getWidth() - (margin.left + margin.right);
int height = component.getHeight() - (margin.top + margin.bottom);
BufferedImage buffer =
new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Poi invochi tu stesso paintComponent passandogli come argomento un Graphics che ricavi dal buffer:
Graphics graphics = buffer.getGraphics();
graphics.translate(-margins.left, -margins.top);
component.paintComponent(graphics);
A questo punto l'immagine "buffer" avrà lo stesso aspetto del tuo disegno. Per salvarla puoi usare ImageIO:
File file = new File("immagine.png");
ImageIO.write(buffer, "png", file);
Se invece disegni su un buffer, ad esempio perchè fai grafica bitmap, allora salvi direttamente quello.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.