Xna: Texture2D aus einer PNG-Datei

9

Ich mache ein Kachel-basiertes Spiel und arbeite für die Unterstützung von Kachelsätzen. Ich versuche es so zu machen, dass eine Texture2D als ausgewählte PNG-Datei festgelegt wird. Ich kann dies ohne Probleme tun, wenn ich das Bild in die Inhaltspipeline lade, aber der Ebeneneditor wird von Personen ohne Zugriff auf die Inhaltspipeline verwendet. Wie mache ich das?

Raj
quelle

Antworten:

4

Sie können die statische Methode Texture2D.FromStream aufrufen . Übergeben Sie einfach einen Stream an die PNG-Datei. Ich bin mir ziemlich sicher, dass es ohne die Content-Pipeline funktioniert.

Michael Coleman
quelle
4

Ein bisschen spät für Raj, aber für alle anderen ...

        string PictureLocation = @"D:\PictureName.png";
        Texture2D Newtexture =  LoadPicture(PictureLocation);

        string PictureDestination = @"D:\NewPictureName.png";
        SavePicture(PictureDestination, Newtexture);

    public static Texture2D LoadPicture(string Filename)
    {
        FileStream setStream = File.Open(Filename, FileMode.Open);
        Texture2D NewTexture = Texture2D.FromStream(graphicsDevice, setStream);
        setStream.Dispose();
        return NewTexture;
    }

    public static void SavePicture(string Filename, Texture2D TextureToSave)
    {
        FileStream setStream = File.Open(Filename, FileMode.Create);
        StreamWriter writer = new StreamWriter(setStream);
        TextureToSave.SaveAsPng(setStream, TextureToSave.Width, TextureToSave.Height);
        setStream.Dispose();
    }

Einlesen und Speichern an einem neuen Ort für PNG und JPEG (ich denke, sie werden nur unterstützt, aber das sollte gut genug sein :).

Hoffe, das hilft allen anderen mit einem ähnlichen Problem. Stoort.

Stoort
quelle