Avatar billede supa Nybegynder
12. juni 2006 - 13:15 Der er 7 kommentarer

Hvordan tager jeg et Screenshot med java?

Hejsa..

Jeg sidder med et lille tegne program hvor jeg skal gemme mit Canvas som en image-fil (gif, jpeg, tiff, png, whatever, det kan jeg godt finde ud af)..

Mit problem er at jeg har scroll på min tegneflade, og når jeg så vil gemme det jeg har tegnet i en fil, så får jeg kun gemt det jeg kan se på skræmen, ved brug af java.awt.Robot..

Hvordan tager jeg hele Canvas og gemmer det i en image-fil..? Altså inklusiv det som jeg ikke kan se på skræmen, men som jeg ved er der..
Avatar billede rolchau Nybegynder
12. juni 2006 - 14:30 #1
Du kunne lave et bufferedimage hvorpå du tegner canvas'et på og så gemmer det billede.
Avatar billede supa Nybegynder
13. juni 2006 - 09:18 #2
Alt hvad jeg har tegnet er på et JPanel.. Hvordan laver jeg så det til et BufferedImage..?
Avatar billede rolchau Nybegynder
13. juni 2006 - 09:37 #3
Du tegner på dit JPanel, dvs du har placeret et Canvas på et JPanel, ikke? Det du tegner i dit tegneprogram bliver tegnet i en "tegne metode" vha. Graphics/Graphics2D?
Avatar billede supa Nybegynder
13. juni 2006 - 09:46 #4
Jo, det jeg tegner bliver tegnet med Graphics/Graphics2D..

Skal jeg gøre noget i denne stil:

BufferedImage image;

public void paint(Graphics g){
bla bla..

image = (BufferedImage)this.createImage(wídth, height);
Graphics2D g2 = image.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

g2.draw..
bla bla.. osv..
}
Avatar billede rolchau Nybegynder
13. juni 2006 - 10:13 #5
Ok du har jo nærmest løsningen selv allerede, men her et lille eksempel hvordan man får et bufferedimage til at indholde alt hvad din tegne metode indeholder:

BufferedImage b = new BufferedImage(width, height, Transparency.OPAQUE); //Width,height kender du fra dit canvas
Graphics2D g = b.createGraphics();
paint(g); // Brug b's graphic object i din paint metode, således tegnes alt på b
g.dispose(); //ryd op

På den måde har du et bufferedimage med alt hvad der bliver tegnet fra paint metoden. Og det er jo faktisk det du allerede gør i form af en dobbel buffer (dit image object). Det image indeholder vel nok alt hvad der bliver tegnet på dit canvas og du kan derfor gemme det til disk.
Avatar billede supa Nybegynder
13. juni 2006 - 13:59 #6
Det virker skam, tak.. :)
Svar..
Avatar billede rolchau Nybegynder
13. juni 2006 - 14:58 #7
Så lidt.
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