/// <summary> /// Get an image of the entire map on the specified floor /// </summary> /// <param name="dir"></param> /// <param name="floor"></param> /// <param name="callback"></param> /// <returns></returns> public Bitmap MapFloorToImage(string dir, int floor, MapFloorToImagePercentCallback callback) { // Open the directory DirectoryInfo di = new DirectoryInfo(dir); // Get all the map files FileInfo[] mapFiles = di.GetFiles((openTibiaMaps ? MaskOT : MaskReal) + floor.ToString("00") + ".map"); // Find the boundary Rectangle r = GetBoundary(mapFiles); // Create a new bitmap big enough to hold all the map Bitmap b = new Bitmap(r.Width, r.Height); // Get the graphics object to draw on the image Graphics g = Graphics.FromImage(b); // Set the background to be black g.Clear(Color.Black); // Keep track of how far along we are int counter = 0; int total = mapFiles.Length; // Loop through the map files and draw them onto the bitmap foreach (FileInfo mapFile in mapFiles) { Location l = MapFileNameToLocation(mapFile.Name); if (l.Z == currentZ) { g.DrawImage(MapFileToImage(dir + mapFile.Name), l.X - r.Left, l.Y - r.Top); } counter++; if (callback != null) { callback((int)(counter * 100.0 / total)); } } return(b); }
/// <summary> /// Get an image of the entire map on the specified floor /// </summary> /// <param name="dir"></param> /// <param name="floor"></param> /// <param name="callback"></param> /// <returns></returns> public Bitmap MapFloorToImage(string dir, int floor, MapFloorToImagePercentCallback callback) { // Open the directory DirectoryInfo di = new DirectoryInfo(dir); // Get all the map files FileInfo[] mapFiles = di.GetFiles((openTibiaMaps ? MaskOT : MaskReal) + floor.ToString("00") + ".map"); // Find the boundary Rectangle r = GetBoundary(mapFiles); // Create a new bitmap big enough to hold all the map Bitmap b = new Bitmap(r.Width, r.Height); // Get the graphics object to draw on the image Graphics g = Graphics.FromImage(b); // Set the background to be black g.Clear(Color.Black); // Keep track of how far along we are int counter = 0; int total = mapFiles.Length; // Loop through the map files and draw them onto the bitmap foreach (FileInfo mapFile in mapFiles) { Location l = MapFileNameToLocation(mapFile.Name); if (l.Z == currentZ) g.DrawImage(MapFileToImage(dir + mapFile.Name), l.X - r.Left, l.Y - r.Top); counter++; if (callback != null) callback((int)(counter * 100.0 / total)); } return b; }