Ich habe ein anderes Problem mit XNA. Ich habe eine Texture2D mit vielen Kacheln. Dann habe ich eine Liste von Rechtecken, die die Grenzen von jeder 50x50 Pixel Kachel sein sollen.XNA speichert eine einzelne Kachel als PNG
Jetzt möchte ich in der Lage sein, jede Kachel als kleine PNG-Datei zu speichern. Hier ist mein Code:
//declare the rectangles and spritesets
Texture2D tileSheet;
List<Rectangle> tileSet;
//load every tile, also works great
tileSheet = Content.Load<Texture2D>(@"Tiles/Object");
int noOfTilesX = (int)tileSheet.Width/50;
int noOfTilesY = (int)tileSheet.Height/50;
tileSet = new List<Rectangle>(noOfTilesX * noOfTilesY);
for (int j = 0; j < noOfTilesY; j++)
{
for (int i = 0; i < noOfTilesX; i++)
{
bounds = new Rectangle(i * 50, j * 50, 50, 50);
tileSet.Add(bounds);
}
}
//save as pngs if they do not exist
if (!File.Exists(@"C:\Test.png"))
{
Stream stream = File.Create(@"C:\Test.png");
//works, but it is only the complete file, i'd like to save a single tile
tileSheet.SaveAsPng(stream, tileSheet.Width, tileSheet.Height);
}
Das Problem ist: Ich kann nicht eine einzelne Kachel retten kann, ist es immer spart meine ganze Texture2D und dehnt sie auf die Auflösung i in den Parametern übergeben. Suchen im Internet hat mir nichts gesagt, es hat mir nur gesagt, wie man den Stream für eine komplette Textur2D verwenden kann.