private void GetImagesAsyncEnd(GetImageEndResult res) { //draw only if generation is larger than the current, else we have aldready drawn something newer if (res == null || res.generation < _imageGeneration || _isDisposed) return; if (Logger.IsDebugEnabled) Logger.DebugFormat("{2}: {0} - {1}", res.generation, res.bbox, DateTime.Now); if ((_setActiveToolNoneDuringRedraw || ShowProgressUpdate) && InvokeRequired) { try { BeginInvoke(new MethodInvoker(delegate { GetImagesAsyncEnd(res); })); } catch (Exception ex) { Logger.Warn(ex.Message, ex); } } else { try { var oldRef = _image; if (Width > 0 && Height > 0) { var bmp = new Bitmap(Width, Height); using (var g = Graphics.FromImage(bmp)) { g.Clear(_map.BackColor); lock (_backgroundImagesLocker) { //Draws the background Image if (_imageBackground != null) { try { g.DrawImageUnscaled(_imageBackground, 0, 0); } catch (Exception ex) { Logger.Warn(ex.Message, ex); } } } //Draws the static images if (_staticImagesLocker != null) { try { if (_imageStatic != null) { g.DrawImageUnscaled(_imageStatic, 0, 0); } } catch (Exception ex) { Logger.Warn(ex.Message, ex); } } //Draws the variable Images if (_imageVariable != null) { try { g.DrawImageUnscaled(_imageVariable, 0, 0); } catch (Exception ex) { Logger.Warn(ex.Message, ex); } } g.Dispose(); } lock (_paintImageLocker) { _image = bmp; _imageEnvelope = res.bbox; } } if (res.Tool.HasValue) { if (_setActiveToolNoneDuringRedraw) ActiveTool = res.Tool.Value; _dragEndPoint = new Point(0, 0); _isRefreshing = false; if (_setActiveToolNoneDuringRedraw) Enabled = true; if (ShowProgressUpdate) { _progressBar.Enabled = false; _progressBar.Visible = false; } } lock (_paintImageLocker) { if (oldRef != null) oldRef.Dispose(); } Invalidate(); } catch (Exception ex) { Logger.Warn(ex.Message, ex); } #if DEBUG _watch.Stop(); LastRefreshTime = _watch.Elapsed; #endif try { if (MapRefreshed != null) { MapRefreshed(this, null); } } catch (Exception ee) { //Trap errors that occured when calling the eventhandlers Logger.Warn("Exception while calling eventhandler", ee); } } }
private void GetImagesAsyncEnd(GetImageEndResult res) { //draw only if generation is larger than the current, else we have aldready drawn something newer if (res == null || res.generation < _imageGeneration) return; #if DEBUG Debug.WriteLine(string.Format("{2}: {0} - {1}", res.generation, res.bbox, DateTime.Now)); #endif if ((_setActiveToolNoneDuringRedraw || ShowProgressUpdate) && InvokeRequired) { try { BeginInvoke(new MethodInvoker(delegate { GetImagesAsyncEnd(res); })); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } else { try { var oldRef = _image; var bmp = new Bitmap(Width, Height); lock (_map) { using (var g = Graphics.FromImage(bmp)) { //Draws the background Image if (_imageBackground != null) { try { g.DrawImageUnscaled(_imageBackground, 0, 0); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } //Draws the static images if (_imageStatic != null) { try { g.DrawImageUnscaled(_imageStatic, 0, 0); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } //Draws the variable Images if (_imageVariable != null) { try { g.DrawImageUnscaled(_imageVariable, 0, 0); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } g.Dispose(); } _image = bmp; _imageBoundingBox = res.bbox; } if (res.Tool.HasValue) { if (_setActiveToolNoneDuringRedraw) ActiveTool = res.Tool.Value; _dragEndPoint = new Point(0, 0); _isRefreshing = false; if (_setActiveToolNoneDuringRedraw) Enabled = true; if (ShowProgressUpdate) { _progressBar.Enabled = false; _progressBar.Visible = false; } } if (oldRef != null) oldRef.Dispose(); Invalidate(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } #if DEBUG _watch.Stop(); LastRefreshTime = _watch.Elapsed; #endif if (MapRefreshed != null) { BeginInvoke(new MethodInvoker(delegate { MapRefreshed(this, null); })); } } }