Wie man die Größe und speichern einer Texture2D in XNA?
In einem level-editor, den ich gemacht habe für mein XNA Spiel (editor ist auch in XNA) ich bin so dass Sie zu skalieren Texture2D Objekte.
Wenn der Benutzer versucht, das Niveau speichern, möchte ich eigentlich die Größe der image-Datei auf der Festplatte, so dass es nicht skaliert werden muss im Spiel.
Gibt es eine einfache Möglichkeit zum erstellen einer image-Datei (PNG bevorzugt) aus einer skalierten Texture2D-Objekt?
InformationsquelleAutor Ben S | 2009-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Größe Ihrer Texturen zu Rendern, um ein render-target in der Größe, die Sie möchten, und speichern Sie anschließend die render target texture.
Dieses einfache Beispiel zeigt, wie man das tun könnte. Ignorieren Sie die Einrichtung des GraphicsDevice, das ist nur eine kleine Selbstversorger-Beispiel. Der interessante Teil ist die Erstellung der render-target und Zeichnung der textur skaliert. Sollten Sie die Wiederverwendung der render-targets, wo Sie können (alle Bilder in der gleichen Größe wieder verwenden können, ein render-target).
InformationsquelleAutor Leaf Garland
Haben Sie versucht,Texture2D.Save()?
InformationsquelleAutor xian
Skalieren von Bildern in der Regel nicht entstehen, dass viel Aufwand, plus, Sie würde nicht wollen, zu laden, in verschiedenen Größen von der gleichen textur in den Speicher, als wäre das eine Verschwendung.
Natürlich könnte man sein, schreiben einen Zune-Spiel, was bedeutet, ich bin wahrscheinlich ab über die Skalierung da, aber trotzdem.
Ich glaube nicht, dass Sie können speichern Sie das Bild skaliert direkt von XNA, aber, Sie könnte verwenden WinForms-Klasse Image, um das image laden und dann skalieren auf die Maße in Ihrem level-editor und speichern Sie Sie zurück auf die Festplatte.
Wenn die textur nicht im BMP-oder PNG-obwohl Sie möglicherweise verwenden Sie das Texture2D.Save () - Befehl, um es zu konvertieren in ein format, das Sie verwenden können, in der Image-Klasse.
Dieser thread könnte Ihnen helfen, mit der Verwendung der Image-Klasse.
http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/6fe3d353-0b09-440b-95c9-701efdc9e20a/
InformationsquelleAutor Navaar
Habe ich code wie diesen, macht eine größere/kleinere Kopie der textur, aber ich bekomme Fehler nach einer Weile. Nach 30 ändert, dann bekomme ich die Ausnahme, nicht die erste Zeit.
Scheint ein rendertarget problem, aber ich bin nicht sicher. Frage mich, ob Sie diese Ausnahmen auch, wenn Sie diesen code ausführen viel?
InformationsquelleAutor