Xna: Texture2D a partir de um arquivo png

9

Estou criando um jogo baseado em blocos e trabalhando para suporte a conjuntos de peças. Estou tentando fazer com que um Texture2D seja definido como um arquivo PNG escolhido. Posso fazer isso sem problemas f Carrego a imagem no pipeline de conteúdo, mas o editor de níveis será usado por pessoas sem acesso ao pipeline de conteúdo. Como faço para fazer isso?

Raj
fonte

Respostas:

4

Você pode chamar o método estático Texture2D.FromStream . Basta passar um fluxo para o arquivo png. Tenho certeza de que funciona sem o pipeline de conteúdo.

Michael Coleman
fonte
4

Um pouco tarde para Raj, mas para qualquer outra pessoa ...

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

Lendo e salvando em um novo local para PNG e JPEG (acho que eles são os únicos suportados, mas isso deve ser bom o suficiente) :).

Espero que isso ajude mais alguém com um problema semelhante. Stoort.

Stoort
fonte