public static void Main(string[] args) { Console.WriteLine(""); if (args.Length < 2) { usage(); } mapObj map = new mapObj(args[0]); Console.WriteLine("# Map layers " + map.numlayers + "; Map name = " + map.name); for (int i = 0; i < map.numlayers; i++) { Console.WriteLine("Layer [" + i + "] name: " + map.getLayer(i).name); } try { Bitmap mapImage = new Bitmap(map.width, map.height, PixelFormat.Format32bppRgb); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); using (imageObj image = map.draw()) { BitmapData bitmapData = mapImage.LockBits(new Rectangle(0, 0, image.width, image.height), ImageLockMode.ReadWrite, PixelFormat.Format32bppRgb); try { if (image.getRawPixels(bitmapData.Scan0) == (int)MS_RETURN_VALUE.MS_FAILURE) { Console.WriteLine("Unable to get image contents"); } } finally { mapImage.UnlockBits(bitmapData); } Console.WriteLine("Rendering time: " + stopwatch.ElapsedMilliseconds + "ms"); mapImage.Save(args[1]); } } catch (Exception ex) { Console.WriteLine("\nMessage ---\n{0}", ex.Message); Console.WriteLine( "\nHelpLink ---\n{0}", ex.HelpLink); Console.WriteLine("\nSource ---\n{0}", ex.Source); Console.WriteLine( "\nStackTrace ---\n{0}", ex.StackTrace); Console.WriteLine( "\nTargetSite ---\n{0}", ex.TargetSite); } }
public static void Main(string[] args) { Console.WriteLine(""); if (args.Length < 2) { usage(); } mapObj map = new mapObj(args[0]); Console.WriteLine("# Map layers " + map.numlayers + "; Map name = " + map.name); for (int i = 0; i < map.numlayers; i++) { Console.WriteLine("Layer [" + i + "] name: " + map.getLayer(i).name); } try { WriteableBitmap mapImage = new WriteableBitmap(map.width, map.height, 96, 96, PixelFormats.Bgr32, null); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); using (imageObj image = map.draw()) { // Reserve the back buffer for updates. mapImage.Lock(); try { if (image.getRawPixels(mapImage.BackBuffer) == (int)MS_RETURN_VALUE.MS_FAILURE) { Console.WriteLine("Unable to get image contents"); } // Specify the area of the bitmap that changed. mapImage.AddDirtyRect(new Int32Rect(0, 0, map.width, map.height)); } finally { // Release the back buffer and make it available for display. mapImage.Unlock(); } Console.WriteLine("Rendering time: " + stopwatch.ElapsedMilliseconds + "ms"); // Save the bitmap into a file. using (FileStream stream = new FileStream(args[1], FileMode.Create)) { PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(mapImage)); encoder.Save(stream); } } } catch (Exception ex) { Console.WriteLine("\nMessage ---\n{0}", ex.Message); Console.WriteLine( "\nHelpLink ---\n{0}", ex.HelpLink); Console.WriteLine("\nSource ---\n{0}", ex.Source); Console.WriteLine( "\nStackTrace ---\n{0}", ex.StackTrace); Console.WriteLine( "\nTargetSite ---\n{0}", ex.TargetSite); } }