DotSpatial 更改地图选择集高亮样式

在DotSpatial中,当要素进入地图或者图层的选中要素集合后,颜色会高亮显示,但是默认颜色为Color.Cyan,其RGB为(0,255,255),在地图中并不是很显眼,就是下图这个颜色。实际需求中,可能更需要类似于红色这种颜色进行强调显示要素,而且高亮要素的线宽也会相较于正常模式更粗,方便区别。文末附送代码传送门。

下面两张图是在没有底图的情况下进行修改后、默认高亮效果的对比,可以发现修改后的效果在小比例尺的情况下更加好。如果叠加了底图后,默认的高亮效果应该会更加的难易凸显要素。

 在DotSpatial中,每个图层都有自己的符号化属性,共包含了两个,一个为Symbolizer(这个用于未选中状态下用户自定义的符号化样式),一个为SelectionSymbolizer(用于要素选中状态下的要素符号化样式)。

通过设置SelectionSymbolizer属性即可更改图层的选择高亮样式,但是由于要素类型粗分为点线面三种类型,其绘制的方式也不同,图层的SelectionSymbolizer继承于IFeatureSymbolizer,通过查看帮助文档可知,其子类有LineSymbolizer、PointSymbolizer、PolygonSymbolizer等几种。在对应的要素类型图层中设置对应的IFeatureSymbolizer,便可完成高亮样式的设置。代码如下:

  /// <summary>
        /// 设置图层的高亮显示效果
        /// </summary>
        /// <param name="tempLayer"></param>
        private void setHighLightColor(FeatureLayer tempLayer) {
            try
            {
                switch (tempLayer.FeatureSet.FeatureType)
                {
                    case FeatureType.Line:

                        tempLayer.SelectionSymbolizer = new LineSymbolizer(Color.Red, Color.DarkRed, 2, System.Drawing.Drawing2D.DashStyle.Solid
                            , System.Drawing.Drawing2D.LineCap.Round, System.Drawing.Drawing2D.LineCap.Round);

                        break;

                    case FeatureType.MultiPoint:
                    case FeatureType.Point:

                        tempLayer.SelectionSymbolizer = new PointSymbolizer(Color.Red, DotSpatial.Symbology.PointShape.Star, 2);

                        break;

                    case FeatureType.Polygon:
                         
                        tempLayer.SelectionSymbolizer = new PolygonSymbolizer(Color.Red, Color.DarkRed, 2);


                        break;
                    default:
                        break;
                }
            }
            catch (Exception ex)
            {

                throw;
            }
        }

更加详细的代码传送门 https://github.com/Spe1993/SpeRemarks/blob/master/DotSpatial/ChangeDefaultHighLightSymbol 

发布了16 篇原创文章 · 获赞 2 · 访问量 3505

猜你喜欢

转载自blog.csdn.net/weixin_41012454/article/details/88741303