private static ImageSource GetEditTraceLineImageSourceWithGdiPlusGeoCanvas(MapArguments mapArguments, InMemoryFeatureLayer inProcessLayer, Collection <SimpleCandidate> simpleCandidates, OutlineDrawMode outlineDrawMode) { MemoryStream streamSource = null; OutlineGdiPlusGeoCanvas geoCanvas = new OutlineGdiPlusGeoCanvas(); geoCanvas.OutlineDrawMode = outlineDrawMode; using (var nativeImage = new System.Drawing.Bitmap((int)mapArguments.ActualWidth, (int)mapArguments.ActualHeight)) { geoCanvas.BeginDrawing(nativeImage, mapArguments.CurrentExtent, mapArguments.MapUnit); lock (inProcessLayer) { if (!inProcessLayer.IsOpen) { inProcessLayer.Open(); } inProcessLayer.Draw(geoCanvas, simpleCandidates); } geoCanvas.EndDrawing(); streamSource = new MemoryStream(); nativeImage.Save(streamSource, System.Drawing.Imaging.ImageFormat.Png); streamSource.Seek(0, SeekOrigin.Begin); } BitmapImage bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.StreamSource = streamSource; bitmapImage.EndInit(); bitmapImage.Freeze(); return(bitmapImage); }
protected override void DrawCore(GeoCanvas canvas) { if (highlightFeature != null) { highlightFeatureLayer.Clear(); highlightFeatureLayer.InternalFeatures.Add(highlightFeature); highlightFeatureLayer.Draw(canvas, new Collection <SimpleCandidate>()); } }
private static ImageSource GetEditTraceLineImageSourceWithDrawingVisualGeoCanvas(MapArguments mapArguments, InMemoryFeatureLayer inProcessLayer, Collection <SimpleCandidate> simpleCandidates, OutlineDrawMode outlineDrawMode) { OutlineDrawingVisualGeoCanvas geoCanvas = new OutlineDrawingVisualGeoCanvas(); geoCanvas.OutlineDrawMode = outlineDrawMode; RenderTargetBitmap nativeImage = new RenderTargetBitmap((int)mapArguments.ActualWidth, (int)mapArguments.ActualHeight, geoCanvas.Dpi, geoCanvas.Dpi, PixelFormats.Pbgra32); geoCanvas.BeginDrawing(nativeImage, mapArguments.CurrentExtent, mapArguments.MapUnit); lock (inProcessLayer) { if (!inProcessLayer.IsOpen) { inProcessLayer.Open(); } inProcessLayer.Draw(geoCanvas, simpleCandidates); } geoCanvas.EndDrawing(); return(nativeImage); }