Xna: Texture2D à partir d'un fichier png

9

Je fais un jeu basé sur des tuiles et je travaille pour le support des sets de tuiles. J'essaie de faire en sorte qu'un Texture2D soit défini comme un fichier PNG choisi. Je peux le faire sans problème f Je charge l'image dans le pipeline de contenu, mais l'éditeur de niveau sera utilisé par des personnes n'ayant pas accès au pipeline de contenu. Comment dois-je procéder?

Raj
la source

Réponses:

4

Vous pouvez appeler la méthode statique Texture2D.FromStream . Il suffit de lui transmettre un flux vers le fichier png. Je suis presque sûr que cela fonctionne sans le pipeline de contenu.

Michael Coleman
la source
4

Un peu tard pour Raj mais pour n'importe qui d'autre ...

        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();
    }

Lire et enregistrer dans un nouvel emplacement pour PNG et JPEG (je pense qu'ils sont les seuls pris en charge, mais cela devrait suffire :).

J'espère que cela aide quelqu'un d'autre avec un problème similaire. Stoort.

Stoort
la source