M
me82
Gast
Hallo zusammen,
bin in Grafikprogrammierung noch recht neu und wollte mir ein Programm schreiben mit dem ich
mit der Maus in einem JPanel malen kann. Daraufhin bin ich in diesem Forum auf diesen Thread
http://forum.java.sun.com/thread.jspa?forumID=57&threadID=607073&start=1 gekommen.
Hab das ganze ein wenig umgeschieben und meinen Bedürfnissen angepasst.
Nun möchte ich das gemalte gerne speichern.
Mein erster Versuch war eine Speicherklasse st zu erstellen die das JPanel (bzw die JPanel, sollen mal mehrere werden)
in einer Liste vorhält und Serializable implementiert.
Fehler dabei war dann :
java.io.NotSerializableException: sun.awt.image.OffScreenImage
...
bzw das Graphics2d Object
Alle weiteren Versuche z.B. das JPanel Serializable implementieren zu lassen oder über eine
getter Methode an das Image heranzukommen schlugen fehl
Gleicher Fehler : java.io.NotSerializableException: ...
Die Speicherklasse hab ich natürlich dementsprechend geändert.
Meine Frage ist also, ob es eine Möglichkeit gibt, sich beim Speichern das aktuelle offscreenImage zu holen (hoffe
ich habe das richtig ausgedrückt) und dieses (bzw. mehrere bei mehreren panels (das krieg ich dann schon hin :wink: )) abzuspeichern und beim laden dann dem panel per
das offsetImage zu übergeben, dieses zeichnen und dort dann weitermalen zu können?
Das Image als jpeg in eine Datei zu schreiben funktioniert, falls ich darauf aufbauen kann. Wollt ich aber eigentlich vermeiden. (aber wenn ich das dann im Panel zeichnen kann beim Laden solls mir recht sein).
Danke schon einmal und mfg
me82
bin in Grafikprogrammierung noch recht neu und wollte mir ein Programm schreiben mit dem ich
mit der Maus in einem JPanel malen kann. Daraufhin bin ich in diesem Forum auf diesen Thread
http://forum.java.sun.com/thread.jspa?forumID=57&threadID=607073&start=1 gekommen.
Hab das ganze ein wenig umgeschieben und meinen Bedürfnissen angepasst.
Nun möchte ich das gemalte gerne speichern.
Mein erster Versuch war eine Speicherklasse st zu erstellen die das JPanel (bzw die JPanel, sollen mal mehrere werden)
in einer Liste vorhält und Serializable implementiert.
Code:
objOut = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("test")));
objOut.writeObject(st);
Fehler dabei war dann :
java.io.NotSerializableException: sun.awt.image.OffScreenImage
...
bzw das Graphics2d Object
Alle weiteren Versuche z.B. das JPanel Serializable implementieren zu lassen oder über eine
getter Methode an das Image heranzukommen schlugen fehl
Code:
public BufferedImage getImage() {
BufferedImage img = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
img = (BufferedImage) createImage(getWidth(), getHeight());
return img;
}
Gleicher Fehler : java.io.NotSerializableException: ...
Die Speicherklasse hab ich natürlich dementsprechend geändert.
Meine Frage ist also, ob es eine Möglichkeit gibt, sich beim Speichern das aktuelle offscreenImage zu holen (hoffe
ich habe das richtig ausgedrückt) und dieses (bzw. mehrere bei mehreren panels (das krieg ich dann schon hin :wink: )) abzuspeichern und beim laden dann dem panel per
Code:
setImage(...) {
this.image = newImage;
repaint();
}
das offsetImage zu übergeben, dieses zeichnen und dort dann weitermalen zu können?
Das Image als jpeg in eine Datei zu schreiben funktioniert, falls ich darauf aufbauen kann. Wollt ich aber eigentlich vermeiden. (aber wenn ich das dann im Panel zeichnen kann beim Laden solls mir recht sein).
Danke schon einmal und mfg
me82