Gemme billede fra flere lag i jLayeredPne
Jeg viser nogle billeder i forskellige lag i et jLayeredPane. Så har jeg lavet denne metode til at gemme indholdet af jLayeredPane'n som et billede:static void save(JComponent comp, JComponent comp2) {
int w = comp.getWidth(), h = comp.getHeight();
BufferedImage image = new BufferedImage(w, h,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
g2.setBackground(Color.white);
g2.fillRect(0,0,w,h);
comp.printAll(g2);
int w2 = comp2.getWidth(), h2 = comp2.getHeight();
g2.fillOval(0,0,w2-1,h2-1);
comp2.printAll(g2);
g2.dispose();
try {
ImageIO.write(image, "jpeg", new File("image.jpeg"));
} catch(java.io.IOException e) {
System.out.println("\nERROR IN SAVING
IMAGE="+e.getMessage()+"\n");
}
}
Hvis jeg kun gemmer billedet fra 1 lag, så virker det fint. De forskellige lag sendes ind i metoden gennem JComponent-argumenterne. Det første argument er et jPanel, og dette virker fint. Panellet har målene 500x500. Hvis jeg så sendes mit layeredPane med ind til metoden gennem argument2, og gemmer dets data sammen med det første arguments data, så gemmes det ovne på det første billede, men øverst i venstre hjørne. Altså er selve billedet inde i laget i layeredPane gået tabt - eller også skal det angives manuelt. Hvis der ikke er anden vej udenom, så kan jeg da godt medsendes dets koordinater (selvom billedet er en cirkel), men findes der ikke en mere attraktiv måde, at gemme et billede (som er sammensat af flere lag i et layeredPane -> der ligger componenter på hvert layer) på?
