Screenshot einer Graphics2D Anwendung erstellen

haimat

Mitglied
Hallo und guten Abend zusammen!

Ich entwickle gerade eine Simulation inkl. grafischer Ausgabe, die via Graphics2D im fullscreen Modues eines GraphicsDevice auf den Bildschirm zeichnet. Das funktioniert auch ganz gut, nun möchte ich per Tastendruck einen Screenshot der kompletten Ausgabe erstellen.

Ich habe ein bischen im Internet gegoogelt, stosse dabei immer wieder auf die Robot-Klasse, die aber anscheined bei einer grafischen Ausgabe nicht funktioniert (das gespeicherte Bild ist in meinem Fall immer nur grau). Kennt wer von euch eine Möglichkeit, den Bildschirminhalt einer solchen Graphics2D basierten Applikation in ein File zu schreiben?

Bin für jeden Hinweis dankbar :)

Schönen Abend noch und viele Grüße, Matthias
 

eRaaaa

Top Contributor
Ich habe ein bischen im Internet gegoogelt, stosse dabei immer wieder auf die Robot-Klasse, die aber anscheined bei einer grafischen Ausgabe nicht funktioniert (das gespeicherte Bild ist in meinem Fall immer nur grau).

Mhmm .. hat der vllt das falsche GraphicsDevice benutzt? Man kann dem Robot im Konstruktor das Device mitgeben, oder hattest du das getan und klappt trotzdem nicht?
Bzw könntest du mal ein KSKB posten?
 

haimat

Mitglied
Hallo Basti,

der Tipp mit dem Angeben des devices war gut, das habe ich noch gar nicht gesehen. Leider bleibt auch bei der Angabe meines devices das Bild grau. Anbei mal meine screenshot Methode:

Java:
	public void takeScreenshot(String loc) throws IOException, AWTException
	{
		File file = new File(loc);
		Robot robot = new Robot(device);
		
		BufferedImage screenShot = robot.createScreenCapture(
				new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
		ImageIO.write(screenShot, "PNG", file);
	}

Reicht das für eine Analyse, oder bedarf es wirklich eines vollwertigen kompilierbaren Bsp.? Wenn ja, dann dauert das etwas, denn die graphische Ausgabe besteht aus ein ein paar zugrundeliegenden Hilfs-Klassen, die ich erst mal extrahieren muss...

Danke und viele Grüße, Matthias
 

Steev

Bekanntes Mitglied
Hmm, ich frage mich gerade, wieso du die Robots-Klasse verwendest, wenn du doch über ein VolatileImage rendern könntest und dieses dann ganz unkompliziert in ein BufferedImage zeichnen könntest. Das BufferedImage könntest du dann über ImageIO abspeichern.
Wenn du in ein VolatileImage renderst, dann muss du das Bild einfach nur noch per drawImage auf den Bildschirm zeichnen.
Schneller ist das ganze in der Regel sogar auch noch.

Gruß
Steev
 

haimat

Mitglied
Hallo Steev,

danke für den Tipp! Ich kenne diese Konzept noch nicht, daher noch eine Frage: meinst du, dass ich anstatt direkt in das Graphics2D Objekt zu zeichnen stattdessen in ein VolatileImage zeichne und das Ganze dann via Graphics2D rendere? Wenn ja, ist es dann möglich die BufferStrategies etc. wie gewohnt zu verwenden?

Thx und lg, Matthias
 

Steev

Bekanntes Mitglied
Guten Morgen,

du kannst von einem VolatileImage ebenfalls ein Graphics2D-Objekt zurückbekommen und so zeichnen. Die Zeichnung auf das JFrame oder auf dein JPanel erfolgt weiterhin über das Graphics(2D)-Objekt der paint(Component)-Methode. Nur das du halt nur noch drawImage(deinVolatileImage, 0, 0, null) aufrufst, anstatt, wie bisher, alle deine Objekte über dieses Graphics(2D)-Objekt zu rendern.
Intern rufst du natürlich noch in regelmäßigen Abständen (evtl. bei jedem Aufruf der paint(Component)-Methode) eine Methode auf, die das VolatileImage neu zeichnet.

Daher wird alles andere so bleiben können wie bisher, nur dass du die Zeichnung der Objekte um eine Methode "verschoben" wird.

Gruß
Steev
 

haimat

Mitglied
Wunderbar, das ist natürlich genau das, was ich gesucht habe!
Vielen Dank, ich werd mir das heute Abend gleich ansehen...

Viele Grüße, Matthias
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Screenshot Programm nach Exception weiterlaufen lassen? Spiele- und Multimedia-Programmierung 9
F Screenshot höhere Qualität? Spiele- und Multimedia-Programmierung 11
M Einen Hobby Game - / Grafik Designer zu finden (Screenshot vom Spiel) Spiele- und Multimedia-Programmierung 7
F OpenGL Screenshot in iMove (als Greenscreen) => Farben invertiert? Spiele- und Multimedia-Programmierung 16
F Wie mache ich einen Screenshot vom Display (LWJGL)? Spiele- und Multimedia-Programmierung 7
T Screenshot funktion, malt doppelt? Spiele- und Multimedia-Programmierung 2
aze Java 3D:Screenshot machen.Komische Farben Spiele- und Multimedia-Programmierung 3
G Screenshot aus Java3D heraus Spiele- und Multimedia-Programmierung 2
YangLee Ausgabe von einer Bewegung bei mehrzeiligen Strings Spiele- und Multimedia-Programmierung 1
E relevanter bereich einer isometrischen karte zeichnen (AffineTransform) Spiele- und Multimedia-Programmierung 0
M Audio Track einer Musik CD abspielen mittels vlcj-Bibliothek Spiele- und Multimedia-Programmierung 0
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
D Programmierung einer Tor-Anzeige Spiele- und Multimedia-Programmierung 8
C Optimale Wegberechnung einer KI Spiele- und Multimedia-Programmierung 6
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
R Einfärben von Gemeinden auf einer Karte Spiele- und Multimedia-Programmierung 14
S ECS: "deep copy" einer Entity-Vorlage Spiele- und Multimedia-Programmierung 9
R Aufruf einer render-Methode Spiele- und Multimedia-Programmierung 12
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
J Frage zum Einlesen einer .wav in ein byte Array Spiele- und Multimedia-Programmierung 3
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
T Alle Referenzen zu einer Klasse aus Java Bytecode ersetzt, JVM sucht trotzdem diese Klasse Spiele- und Multimedia-Programmierung 1
M Kamera "am Rande einer Kugel bewegen" Spiele- und Multimedia-Programmierung 4
B Den KeyListener in einer JavaFXML Application benutzen Spiele- und Multimedia-Programmierung 2
gamebreiti Index eines Elements einer ArrayList abfragen Spiele- und Multimedia-Programmierung 1
F Das sag mir einer Java ist plattform unabhänig ! Spiele- und Multimedia-Programmierung 10
M Scrolling einer 2D Map Spiele- und Multimedia-Programmierung 8
J In einer While-Schleife auf Event warten Spiele- und Multimedia-Programmierung 3
TheSorm Collision an einer bestimmten Seite eine Rectangles abfragen Spiele- und Multimedia-Programmierung 3
windl Frage zu Airplay und zur Mitarbeit bei einer Mediaanlage Spiele- und Multimedia-Programmierung 0
A Aufbau einer JOGL Anwendung Spiele- und Multimedia-Programmierung 12
L Werte aus einer .yml Datei lesen Spiele- und Multimedia-Programmierung 9
H Java3D - Textur aufs innere einer Sphere mappen Spiele- und Multimedia-Programmierung 9
F Download und Update einer Java-Anwendung Spiele- und Multimedia-Programmierung 10
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
B Video von einer IP kamera Spiele- und Multimedia-Programmierung 5
W Java3D: Eckkoordinaten einer Box herausfinden Spiele- und Multimedia-Programmierung 18
W Rotation aller Objekte einer 3D-Szene Spiele- und Multimedia-Programmierung 8
2 Ein Zufallsweg bzw. Weg in einer 2dim Matrix finden. Spiele- und Multimedia-Programmierung 21
aze Schnittmenge zwischen Linie und einer Area wegschneiden Spiele- und Multimedia-Programmierung 3
A Bild einer Webcam auffangen Spiele- und Multimedia-Programmierung 20
G Ballerkennung aus einer Bilddatei Spiele- und Multimedia-Programmierung 24
B Generierung einer Wertetabelle aus einem Bild Spiele- und Multimedia-Programmierung 3
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
M Realisierung einer Sichtweise in Java2D Spiele- und Multimedia-Programmierung 3
B String zu Objekt einer eigenen Klasse casten Spiele- und Multimedia-Programmierung 13
F Simulation einer Magnetischen Flasche Spiele- und Multimedia-Programmierung 17
F Meine Aufgabe: Client-Server am Beispiel einer Implementation eines Tic-Tac-Toe Netzwerkspieles Spiele- und Multimedia-Programmierung 7
J Fehlverhalten einer Spielfigur Spiele- und Multimedia-Programmierung 7
N Jogl Probleme mit dem Buffer beim laden einer Textur Spiele- und Multimedia-Programmierung 2
M Das Frequenzspektrum einer WAV/MP3-Datei anzeigen Spiele- und Multimedia-Programmierung 6
M Rechteck erkennung innerhalb einer Matix Spiele- und Multimedia-Programmierung 4
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
E Pinball Abprall an einer schrägen Bande Spiele- und Multimedia-Programmierung 19
0x7F800000 weiß einer wozu ANTLR beim build von JOGL verwendet wird? Spiele- und Multimedia-Programmierung 3
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
A Tutorial für die Entwicklung einer Fussball-KI gesucht Spiele- und Multimedia-Programmierung 7
S Rotation relativ zur Rotation einer anderen Transform Group Spiele- und Multimedia-Programmierung 3
A Screenshots von einer Scene erstellen Spiele- und Multimedia-Programmierung 5
G Land aus einer Weltkarte selektieren Spiele- und Multimedia-Programmierung 10
D Kräftesimulation auf einer 2D-Oberfläche Spiele- und Multimedia-Programmierung 5
T Geschwindigkeit einer Animation aendern Spiele- und Multimedia-Programmierung 6
G Ermitteln eines Punktes in einer anderen TransformGroup Spiele- und Multimedia-Programmierung 2
N Background in Java3D ähnlich einer Skybox erzeugen Spiele- und Multimedia-Programmierung 5
H zB Punkte darstellen und mit einer Linier verbinden Spiele- und Multimedia-Programmierung 5
F Darstellung einer tierischen Zelle Spiele- und Multimedia-Programmierung 3
S Text an einer Seite eines Cubes Spiele- und Multimedia-Programmierung 7
F Das SPiel ruckelt nach einer Zeit Spiele- und Multimedia-Programmierung 19
D wieder einer von anfang an. Spiele- und Multimedia-Programmierung 4
M Darstellung einer schwingenden Membran? Spiele- und Multimedia-Programmierung 23
raptorrs Teile einer CAD-Assembly Gruppe in JAVA animieren? Spiele- und Multimedia-Programmierung 3
K Beschriftung von Punkten in einer "Punktwolke" Spiele- und Multimedia-Programmierung 2
S Zur Laufzeit auf die Methode einer anderen Klasse zugreifen Spiele- und Multimedia-Programmierung 5
K Klick in der nähe einer Strecke Spiele- und Multimedia-Programmierung 14
M JPanel mit Graphics2D Objekten mit JScrollpane Spiele- und Multimedia-Programmierung 6
S Graphics2D Oval vs. Rect -Performance Spiele- und Multimedia-Programmierung 17
X Polygon in Graphics2D löschen Spiele- und Multimedia-Programmierung 4
S Graphics.drawString (Graphics2D.drawString) Y-Problem Spiele- und Multimedia-Programmierung 4
A Graphics2D. repaint() Spiele- und Multimedia-Programmierung 12
M Graphics2D problem Spiele- und Multimedia-Programmierung 5
V Graphics oder Graphics2D Zeichenfunktion gesucht? Spiele- und Multimedia-Programmierung 4
H Größenänderung von Graphics2D Strings bzw Fonts Spiele- und Multimedia-Programmierung 2
G Paint mit Graphics2D? Spiele- und Multimedia-Programmierung 8
B JAVA Graphics2D Problem das mich in den Wahnsinn treibt Spiele- und Multimedia-Programmierung 3
B Keine Graphics2D Klasse unter J# .Net??? Spiele- und Multimedia-Programmierung 6

Ähnliche Java Themen

Neue Themen


Oben