public SavedPlacesUserControl() { this.InitializeComponent(); DraggablePin draggablePin = new DraggablePin(MapView.MapControl, this) { Name = "OrDesSelector" }; draggablePin.Draggable = true; MapControl.SetLocation(draggablePin, MapView.MapControl.Center); MapView.MapControl.Children.Add(draggablePin); this.Unloaded += SavedPlacesUserControl_Unloaded; }
public static async Task <MapElement> Run(MapControl map) { var imgContainer = new DraggablePin(map, null); map.Children.Add(imgContainer); await Task.Delay(50); //render symbolicon to bmp RenderTargetBitmap renderbmp = new RenderTargetBitmap(); await renderbmp.RenderAsync(imgContainer); map.Children.Remove(imgContainer); using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream()) { //create a bitmap encoder BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream); //write pixels into this encoder var pixels = await renderbmp.GetPixelsAsync(); var reader = DataReader.FromBuffer(pixels); byte[] bytes = new byte[reader.UnconsumedBufferLength]; reader.ReadBytes(bytes); encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)renderbmp.PixelWidth, (uint)renderbmp.PixelHeight, 0, 0, bytes); await encoder.FlushAsync(); var mapIconStreamReference = RandomAccessStreamReference.CreateFromStream(stream); //create mapIcon var mapIcon = new MapIcon(); mapIcon.Image = mapIconStreamReference; mapIcon.Location = map.Center; mapIcon.Title = "Some label".ToString(); return(mapIcon); } }