コード例 #1
0
        /// <summary>
        /// Perform calculations and update data.
        /// </summary>
        /// <param name="updateTime">Time since last update.</param>
        /// <remarks>include base.Update(renderTime); in overloads to preserve updating UpdateTime field.</remarks>
        public override void Update(RenderTime updateTime)
        {
            base.Update(updateTime);

            if (!Surface.IsDirty && _lastZoom == Surface.Coordinates.ZoomLevel)
            {
                return;
            }

            _lastZoom = Surface.Coordinates.ZoomLevel;

            foreach (var value in regions.Values)
            {
                value.Geometry.Dispose();
            }
            regions.Clear();

            foreach (var boundary in MM_Repository.Counties.Values.ToList())
            {
                RawRectangleF bounds;
                var           geometry = Surface.CreateRegionPathGeometry(MM_Coordinates.ConvertPoints(boundary.Coordinates, Surface.Coordinates.ZoomLevel).ToList(), out bounds, filled: true, simplify: true);

                var region = new RegionProxy(geometry, boundary.DisplayParameter.ForeColor, boundary.DisplayParameter.Width, bounds);
                region.Boundary = boundary;
                if (boundary.Name == "STATE")
                {
                    state = region;
                }
                else
                {
                    regions.Add(boundary, region);
                }
            }

            foreach (MM_Boundary boundary in MM_Repository.Districts.Values.ToList())
            {
                RawRectangleF bounds;
                var           geometry = Surface.CreateRegionPathGeometry(MM_Coordinates.ConvertPoints(boundary.Coordinates, Surface.Coordinates.ZoomLevel).ToList(), out bounds, simplify: true);
                var           region   = new RegionProxy(geometry, boundary.DisplayParameter.ForeColor, boundary.DisplayParameter.Width, bounds);
                regions.Add(boundary, region);
            }
        }
コード例 #2
0
        /// <summary>
        /// Unload content and cleanup unmanaged resources.
        /// </summary>
        public override void UnloadContent()
        {
            base.UnloadContent();

            if (_state != null && !_state.IsDisposed)
            {
                _state.Dispose();
                _state = null;
            }
            if (_font != null)
            {
                _font.Dispose();
            }
            _font = null;
            if (_target != null)
            {
                _target.Dispose();
            }
            _target = null;
        }
コード例 #3
0
        /// <summary>
        /// Load Content and initialize unmanaged resources.
        /// </summary>
        public override void LoadContent()
        {
            int width  = 256;
            int height = 256;

            var size  = Surface.RenderTarget2D.PixelSize;
            var sizeV = new Vector2(size.Width, size.Height);

            _start        = sizeV - new Vector2(width, height) - new Vector2(10, 10);
            _end          = sizeV - new Vector2(10, 10);
            _viewLocation = new SharpDX.RectangleF(_start.X, _start.Y, _end.X - _start.X, _end.Y - _start.Y);

            base.LoadContent();

            if (_font == null || _font.IsDisposed)
            {
                _font = Surface.Fonts.GetTextFormat(MM_Repository.OverallDisplay.NetworkMapFont, 5);
            }

            if (_target == null || _target.IsDisposed)
            {
                _target = Surface.CreateRenderTarget(width, height);
            }

            MM_Boundary State;

            if (MM_Repository.Counties.TryGetValue("STATE", out State))
            {
                RawRectangleF bounds;
                var           geometry = Surface.CreateRegionPathGeometry(MM_Coordinates.ConvertPoints(State.Coordinates, 4).ToList(), out bounds, filled: true, simplify: true);
                geometry.Dispose();

                _scale = new Vector2(width / (bounds.Right - bounds.Left), height / (bounds.Bottom - bounds.Top));

                var geometryScaled = Surface.CreateRegionPathGeometry(MM_Coordinates.ConvertPoints(State.Coordinates, 4).ToList(), out bounds, filled: true, compression: 0.001f, simplify: true, scaleX: _scale.X, scaleY: _scale.Y);
                _location = new Vector2(bounds.Left, bounds.Top);

                _state = new RegionProxy(geometryScaled, State.DisplayParameter.ForeColor, State.DisplayParameter.Width, bounds);
            }
        }
コード例 #4
0
        /// <summary>
        /// Unload content and cleanup unmanaged resources.
        /// </summary>
        public override void UnloadContent()
        {
            base.UnloadContent();
            brushes.Cleanup();
            brushes = null;

            var regionProxies = regions.Values.ToList();

            regions.Clear();

            foreach (var r in regionProxies)
            {
                if (!r.IsDisposed)
                {
                    r.Dispose();
                }
            }

            if (state != null && !state.IsDisposed)
            {
                state.Dispose();
                state = null;
            }
        }