Export ein JPanel auf ein Bild
Also ich versuche schon so exportieren Sie ein Bild, das ich gezogen habe auf einem JPanel in ein Bild. Ich habe mit dieser Methode:
BufferedImage image = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
paint(g);
try { ImageIO.write(image, "png", new File([location goes here]); } catch (IOException e) {}
Bekomme ich ein Bild in meine vorgesehene Position, aber ich bekomme eine komprimierte version, was mein JPanel zeigt. Das gleiche passiert, wenn ich versuche zu exportieren BMP als auch. Gibt es einen Weg, um ein pixel-perfektes abbild exportiert aus dem JPanel? Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Muss die Tafel ausgelegt werden, dass Sie basierend auf Ihren Anforderungen anpassen. Wenn das Bedienfeld noch nicht realisiert auf dem Bildschirm, aber kann es nicht machen, wie Sie es erwarten tun
Dem folgenden Beispiel wird davon ausgegangen, dass das panel nicht angezeigt wird, auf dem Bildschirm...
Sollten Sie vermeiden, fordern
paint
sich selbst, kann eine Ausnahme geworfen, wenn die Komponente nicht realisiert auf dem Bildschirm, verwenden Sie stattdessenprintAll
Auch, wenn Ihr eine Ressource erstellen, sollten Sie entsorgen 😉
Aktualisiert
Habe ich dieses kurze Beispiel. Screen shoot on top, jpeg auf der linken Seite, png auf der rechten Seite.
jpeg ist 30kb und png ist 320kb
Habe ich dieses, um es zu schaffen...
Ich würde sicherstellen, dass Sie sind eigentlich auf der Suche an der richtigen Dateien 😉
printAll
auf der übergeordneten Komponente, dann ja, es wird gedruckt, alle Kinder und deren KinderWenn Sie versuchen, ein Bild von einem panel nicht sichtbar ist, auf ein Fenster, dann schauen Sie sich Bild. Es ruft
doLayout()
auf dem Bedienfeld, um sicherzustellen, dass die Komponenten richtig angezeigt werden.