/// <summary> /// Erstellt ein Bitmap Objekt unter Verwendung von Tileset, Tilemap und Palette /// </summary> /// <param name="set">Tileset, welches die Grafikdaten enthält</param> /// <param name="tileWidth">Breite der Ausgabegrafik in Tiles</param> /// <param name="fillColor">Farbe mit der nicht vorhandene Flächen gefüllt werden</param> /// <param name="drawingPalette">Palette, die zur Darstellung verwendet werden soll</param> /// <returns></returns> public Bitmap ToBitmap(Tileset set, int tileWidth, Color fillColor, Palette drawingPalette) { int tileHeight = Entries.Count/tileWidth; var output = new Bitmap(tileWidth*8, tileHeight*8); System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(output); for (int y = 0; y < tileHeight; ++y) { for (int x = 0; x < tileWidth; ++x) { int index = (y*tileWidth) + x; if (index > Entries.Count) { g.FillRectangle(new SolidBrush(fillColor), x*8, y*8, 8, 8); continue; } g.DrawImage(set.GetTileFromIndex(Entries[index].TileNumber).ToBitmap(drawingPalette), new Point(x*8, y*8)); } } g.Dispose(); return output; }
/// <summary> /// Erstellt ein Bitmap aus dem einzelnen Tilemap Eintrag /// </summary> /// <param name="drawingSet">Das zu verwendende Tileset</param> /// <param name="drawingPalette">Die zur Darstellung verwendete Palette</param> /// <returns>Bitmap, welches den Eintrag darstellt</returns> public Bitmap ToBitmap(Tileset drawingSet, Palette drawingPalette) { if (drawingSet.GetTileCount() < TileNumber) throw new Exception(String.Format("Das angegebene Tileset enthält Tile {0} nicht", TileNumber)); Bitmap output = drawingSet.GetTileFromIndex(TileNumber).ToBitmap(drawingPalette); if (HorizontalMirror) { output.RotateFlip(RotateFlipType.RotateNoneFlipX); } if (VerticalMirror) { output.RotateFlip(RotateFlipType.RotateNoneFlipY); } return output; }