private MemoryStream GetImageStream(GeoCanvas canvas, Collection <SimpleCandidate> labelsInAllLayers, RectangleShape adjustedWorldExtent, RectangleShape boundingBox) { using (Bitmap bitmap = new Bitmap((int)boundingBox.Width, (int)boundingBox.Height)) { MemoryStream ms = new MemoryStream(); PlatformGeoCanvas gdiPlusGeoCanvas = new PlatformGeoCanvas(); gdiPlusGeoCanvas.DrawingQuality = DrawingQuality.HighQuality; gdiPlusGeoCanvas.BeginDrawing(bitmap, adjustedWorldExtent, MapUnit); foreach (Layer layer in Layers) { gdiPlusGeoCanvas.Flush(); layer.SafeProcess(() => { layer.Draw(gdiPlusGeoCanvas, labelsInAllLayers); }); } gdiPlusGeoCanvas.EndDrawing(); bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png); return(ms); } }