Пример #1
0
        public static void Combine(ImageFile[] images,
		                           string outputFile, string mapFile)
        {
            // Find max width and total height
            var maxWidth = 0;
            var maxHeight = 0;
            var totalHeight = 0;

            foreach (var image in images)
            {
                totalHeight += image.Image.Height;

                if (image.Image.Width > maxWidth)
                    maxWidth = image.Image.Width;
                if (image.Image.Height > maxHeight)
                    maxHeight = image.Image.Height;
            }

            Console.WriteLine(string.Format("Number of images: {0}, total height: {1}px, width: {2}",
                images.Length, totalHeight, maxWidth));
            // Create the actual sprite
            var currentY = 0;
            const int currentX = 0;
            var surface = new FreeImageBitmap(maxWidth, totalHeight);
            foreach (var image in images)
            {
                var freeImage = GetFreeImage(image);
                surface.Paste(freeImage, currentX, currentY, 0);
                currentY += image.Image.Height;
                image.X = currentX;
                image.Y = currentY;
                Console.WriteLine("{0} copied to {1}, {2}", image.Name, image.X, image.Y);
            }
            Console.WriteLine("Writing sprite: " + outputFile);
            using (var stream = File.OpenWrite(outputFile))
            {
                surface.Save(stream, FREE_IMAGE_FORMAT.FIF_PNG);
            }

            Console.WriteLine("Writing sprite map: " + mapFile);
            using (var writer = File.CreateText(mapFile))
            {
                foreach (var image in images)
                {
                    writer.WriteLine(image);
                    image.Dispose();
                }
            }
        }
Пример #2
0
 public static FreeImageBitmap GetFreeImage(ImageFile image)
 {
     return (FreeImageBitmap)image.Image;
 }