Avatar billede kkaen Nybegynder
08. september 2010 - 15:10 Der er 1 løsning

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å?
Avatar billede kkaen Nybegynder
27. september 2010 - 09:55 #1
Lukkes
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester