Avatar billede dennispc Nybegynder
15. oktober 2003 - 17:22 Der er 7 kommentarer og
1 løsning

JPanel til BufferedImage

Jeg vil gerne tage et billede af et jpanel(screenshot), hvorefter det skal tegnes i et andet vindue(frame).
Jeg har prøvet med et BufferedImage, men jeg kan ikke få vist mit bufferedimage igen ???

et udsnit af koden....

Dimension dim = tegnePanel.getSize();
int w = dim.width;
int h = dim.height;
BufferedImage bi = (BufferedImage)createImage(w, h);

new PrintGui(bi); // kald til ny JFrame, hvor jeg sender mit bufferedImage med, hvorefter jeg gerne vil tegne det igen.

Kan i gennemskue om jeg får sendt mit BufferedImage ??
Avatar billede soreno Praktikant
15. oktober 2003 - 17:33 #1
Prøv at skriv det til disken og check at det faktisk indeholder hvad du forventer (åbn png filen i et passende program):

import javax.imageio.*;
[..]
try
{
  ImageIO.write(bi, "png", new File("test.png"));
}
catch(Exception e)
{
  e.printStackTrace();
}
Avatar billede soreno Praktikant
15. oktober 2003 - 18:08 #2
Du tegner dit BufferedImage igen ved at bruge en JLabel.

JLabel lab = new JLabel(myBufferedImage);

husk at tilføje din label til contentPane.
Avatar billede dennispc Nybegynder
15. oktober 2003 - 18:15 #3
ok det med at skrive til disk virker desværre ikke.....
, da det er fra en JApplet
Avatar billede _carsten Nybegynder
15. oktober 2003 - 20:52 #4
Så vidt jeg kan se får du sendt dit image.
Du skal bruge et Graphics object til at gentegne det i din JFrame

Noget a la:

Graphics g = referencenTilDerHvorJegVilTegneMitImage.getGraphics();

g.drawImage(bi, 0, 0, this);
Avatar billede dennispc Nybegynder
15. oktober 2003 - 22:13 #5
jeg har brugt begge forslag, men når jeg tegner mit image i min Jframe bliver der kun en hvid baggrund ok ikke mere..........

jeg bruger følgende klasse til at vise mit image (har ændret bufferedimage til et alm. image.....

import javax.swing.*;
import java.awt.*;

public class PrintGui extends JFrame
{
    Image img;

    public PrintGui(final Image img)
    {
        this.img = img;
        JPanel panel = new JPanel()
        {
            public void paintComponent(Graphics g)
            {
                //super.paintComponent(g);
                Graphics2D g2 = (Graphics2D) g;
                //g2.drawString("her skulle være et billede",50,50);
                g2.drawImage(img,0,0,this);
            }
        };
        setContentPane(panel);
        setSize(400,400);
        show();
    }
}


nogle ideér ??
Avatar billede billen Nybegynder
19. oktober 2003 - 13:39 #6
hmm... det kan godt være det er fordi jeg er træt... men ud fra det kode du viste i starten, så kan jeg altså ikke se, at dit (Bufferd)Image bliver fyldt op med noget som helst:

Dimension dim = tegnePanel.getSize();
int w = dim.width;
int h = dim.height;
BufferedImage bi = (BufferedImage)createImage(w, h);

== lav-et-nyt-TOMT-billede-der-er-lige-så-stort-som-et-panel
Avatar billede soreno Praktikant
19. oktober 2003 - 13:42 #7
Billen:

Du har ret, det blev behandlet her:
http://www.eksperten.dk/spm/414613

Så mon ikke der er kommet styr på det..
:-)
Avatar billede billen Nybegynder
19. oktober 2003 - 13:43 #8
hehe... så luk spørgsmålet... ;-)
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