public Envelope GetFullEnvelope() { if (_layerContainer == null || _layerContainer.IsEmpty()) { return(null); } Envelope evp = null; for (int i = 0; i < _layerContainer.Layers.Length; i++) { IClass fetclass = _layerContainer.Layers[i].Class as IClass; if (fetclass.IsEmpty()) { continue; } if (evp == null) { evp = fetclass.FullEnvelope.Clone() as Envelope; } evp.UnionWith(fetclass.FullEnvelope); } return(evp); }
public void Render(RenderArgs arg) { if (_map == null || _isDisposed) { return; } ILayerContainer layerContainer = _map.LayerContainer; if (layerContainer.IsEmpty() || _environment.CanvasSize == Size.Empty) { return; } #if DEBUG int time = Environment.TickCount; #endif bool transformIsChanged = _preMapTransform == null || !MathHelper.MatrixIsSame(_preMapTransform, arg.Graphics.Transform); bool envelopeIsChanged = _preFocusEnvelope == null || !_preFocusEnvelope.IsEquals(_environment.FocusEnvelope); transformIsChanged = transformIsChanged || envelopeIsChanged; bool needComputeViewportPrjAgain = true; //for web transformIsChanged = true; // if (transformIsChanged) { if (_transformChanged != null) { _transformChanged(this, null, null); } UpdateViewportAndTransformMatrix(); needComputeViewportPrjAgain = false; } Matrix oldM = arg.Graphics.Transform; bool needRember = false; try { arg.Graphics.Transform = _transformIdentity; if (_environment.UseDummyMap && _dummyBitmap != null) { RenderUseDummyBitmap(arg); } else { if (transformIsChanged || layerContainer.LayerIsChanged || arg.IsReRender || _dummyBitmap == null) { ReRender(arg, needComputeViewportPrjAgain); needRember = true; (layerContainer as LayerContainer).ResetLayerIsChanged(); } else { RenderUseDummyBitmap(arg); } } } finally { //画比例尺条 if (_scaleBarArgs != null && _scaleBarArgs.Enabled) { DrawScaleBar(arg.Graphics); } //画临时图层 DrawHandinessLayers(arg); // arg.Graphics.Transform = oldM; arg.IsReRender = false; arg.IsRendering = false; } if (needRember) { RemeberPreTransform(arg); } if (envelopeIsChanged) { if (_onViewExtentChanged != null) { _onViewExtentChanged.BeginInvoke(this, _environment.FocusEnvelope, null, null); } } #if DEBUG time = Environment.TickCount - time; //Console.WriteLine("lost:" + time.ToString()); //_environment.Container.FindForm().Text = time.ToString(); #endif }