Dwarrowdelf.Client.TileSetLoader.GetTileBitmap C# (CSharp) Method

GetTileBitmap() public method

public GetTileBitmap ( SymbolID symbolID, int size ) : System.Windows.Media.Imaging.BitmapSource
symbolID SymbolID
size int
return System.Windows.Media.Imaging.BitmapSource
        public BitmapSource GetTileBitmap(SymbolID symbolID, int size)
        {
            if (m_symbolSet.Symbols.Contains(symbolID) == false)
                symbolID = SymbolID.Unknown;

            var symbol = m_symbolSet.Symbols[symbolID];

            var gfx = DecideTileGfx(symbol, size);

            if (gfx is VectorGfxBase)
            {
                var g = (VectorGfxBase)gfx;

                var drawing = GetVectorGfx(g);

                return TileSetLoaderHelpers.DrawingToBitmap(drawing, size);
            }
            else if (gfx is BitmapGfx)
            {
                var g = (BitmapGfx)gfx;
                return GetBitmapGfx(g, size);
            }
            else
            {
                throw new Exception();
            }
        }

Usage Example

コード例 #1
0
ファイル: Program.cs プロジェクト: jaenudin86/dwarrowdelf
        static void CreatePng(TileSetLoader loader, string dstPath)
        {
            int numSymbols = EnumHelpers.GetEnumMax <SymbolID>() + 1;

            int[] tileSizes = new int[] {
                8, 10, 12,
                16, 20, 24,
                32, 40, 48,
                64, 80, 96
            };

            int maxTileSize = tileSizes.Max();

            WriteableBitmap target = new WriteableBitmap(tileSizes.Sum(), maxTileSize * numSymbols, 96, 96,
                                                         PixelFormats.Bgra32, null);

            target.Lock();

            // leave the first one (Undefined) empty
            for (int i = 1; i < numSymbols; ++i)
            {
                int xOffset = 0;

                foreach (int tileSize in tileSizes)
                {
                    var source = loader.GetTileBitmap((SymbolID)i, tileSize);

                    int    stride = source.PixelWidth * (source.Format.BitsPerPixel / 8);
                    byte[] data   = new byte[stride * source.PixelHeight];

                    source.CopyPixels(data, stride, 0);

                    target.WritePixels(new Int32Rect(xOffset, i * maxTileSize, tileSize, tileSize), data, stride, 0);

                    xOffset += tileSize;
                }
            }

            target.Unlock();

            string tileSizesStr = string.Join(",", tileSizes.Select(i => i.ToString()));
            var    pngEncoder   = new PngBitmapEncoder();
            var    metadata     = new BitmapMetadata("png");

            metadata.SetQuery("/tEXt/Software", "Dwarrowdelf");
            metadata.SetQuery("/tEXt/tilesizes", tileSizesStr);
            var frame = BitmapFrame.Create(target, null, metadata, null);

            pngEncoder.Frames = new BitmapFrame[] { frame };

            string path = Path.Combine(dstPath, "TileSet.png");

            using (var stream = File.OpenWrite(path))
                pngEncoder.Save(stream);

            Console.WriteLine("Generated TileSet to {0}", path);
        }
All Usage Examples Of Dwarrowdelf.Client.TileSetLoader::GetTileBitmap