Beispiel #1
0
        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);
        }
Beispiel #2
0
        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
        }