private void HandleMapNewTileAvaliable(ITileAsyncLayer sender, Envelope box, Bitmap bm, int sourceWidth, int sourceHeight, ImageAttributes imageAttributes) { if (sender == null) { return; } if (!_imageLayers.TryGetValue((ILayer)sender, out var lockImg)) { return; } if (MapBox.IsDisposed == false && IsDisposed == false) { var min = Point.Round(Map.WorldToImage(box.Min())); var max = Point.Round(Map.WorldToImage(box.Max())); var rect = new Rectangle(min.X, max.Y, (max.X - min.X), (min.Y - max.Y)); lock (lockImg.Item1) { using (var g = Graphics.FromImage(lockImg.Item2)) { g.DrawImage(bm, rect, 0, 0, sourceWidth, sourceHeight, GraphicsUnit.Pixel, imageAttributes); } } InvalidateCacheImage(); MapBox.Invoke(new MethodInvoker(MapBox.Invalidate), rect); MapBox.Invoke(new MethodInvoker(MapBox.Update)); } }
public void Add(ITileAsyncLayer asyncLayer) { if (asyncLayer.OnlyRedrawWhenComplete) { return; } _asyncLayers.Add(asyncLayer); asyncLayer.DownloadProgressChanged += HandleDownloadProgressChanged; }
private void WireTileAsyncEvents(ITileAsyncLayer tileAsyncLayer) { if (tileAsyncLayer.OnlyRedrawWhenComplete) { tileAsyncLayer.DownloadProgressChanged += layer_DownloadProgressChanged; } else { //tileAsyncLayer.MapNewTileAvaliable += MapNewTileAvaliableHandler; } }
public static IObservable <MapNewTileAvailableEventArgs> GetMapNewTileAvailableAsObservable( this ITileAsyncLayer layer) { var listener = new EventListener(layer, "MapNewTileAvaliable"); return(listener.SavedArgs.ToObservable() .Select(dict => new MapNewTileAvailableEventArgs( (TileLayer)dict["sender"], (Envelope)dict["bbox"], (Bitmap)dict["bm"], (int)dict["sourceWidth"], (int)dict["sourceHeight"], (ImageAttributes)dict["imageAttributes"]))); }
private void UnhookTileAsyncEvents(ITileAsyncLayer tileAsyncLayer) { tileAsyncLayer.DownloadProgressChanged -= layer_DownloadProgressChanged; tileAsyncLayer.MapNewTileAvaliable -= MapNewTileAvaliableHandler; }
private void WireTileAsyncEvents(ITileAsyncLayer tileAsyncLayer) { if (tileAsyncLayer.OnlyRedrawWhenComplete) { tileAsyncLayer.DownloadProgressChanged += layer_DownloadProgressChanged; } else { tileAsyncLayer.MapNewTileAvaliable += MapNewTileAvaliableHandler; } }
public static IObservable <DownloadProgressEventArgs> GetDownloadProgressAsObservable(this ITileAsyncLayer layer) { var listener = new EventListener(layer, "DownloadProgressChanged"); return(listener.SavedArgs.ToObservable() .Select(dict => new DownloadProgressEventArgs((int)dict["tilesRemaining"]))); }
private void UnhookTileAsyncEvents(ITileAsyncLayer tileAsyncLayer) { tileAsyncLayer.DownloadProgressChanged -= layer_DownloadProgressChanged; //tileAsyncLayer.MapNewTileAvaliable -= MapNewTileAvaliableHandler; }
private void WmtsLayer_MapNewTileAvaliable(ITileAsyncLayer sender, Envelope bbox, Bitmap bm, int sourceWidth, int sourceHeight, System.Drawing.Imaging.ImageAttributes imageAttributes) { throw new NotImplementedException(); }