转自:http://m.blog.csdn.net/sx341125/article/details/50286137
1.全局设置颜色
我们知道在ArcMap中我们可以设置选择集的样式,就是设置全局选择集的选中时的颜色,在任务栏选择—》选择选项—》默认情况下显示所选要素所使用的颜色;
对应在 IMxApplication::SelectionEnvironment这个属性,但是IMxApplication只在ArcGIS Desktop桌面开发时可以使用,无论是Map与MapControl并没有SelectionEnvironment这个属性,而ISelectionEnvironment这个接口是可以直接New出来的,是CoClass,所以我们可以ISelectionEnvironment mSelectionEnvironment=new SelectionEnvironmentClass();这个接口的属性之中可以使用DefaultColor对当前的环境进行颜色设置:
<span style="white-space:pre"> </span>mSelectionEnvironment.DefaultColor = pColor;//这个pColor可以使用IColorPalette进行设置
mApplication.SelectionEnvironment = this.mSelectionEnvironment;
tagRECT rect=new tagRECT ();
rect.bottom = 0;
rect.left = 0;
rect.right = 5;
rect.top = 5;
IEnvelope env = new EnvelopeClass();
this.mMapControl.ActiveView.ScreenDisplay.DisplayTransformation.TransformRect(env, rect, 4);
this.mMapControl.Map.SelectByShape(env, mSelectionEnvironment, false);
由于这里不知道当前的选择集范围是什么,所以随机建立一个很小的envelope,然后调用IMap的SelectByShape方法选择一次,即使没有任何效果,但是已经将这个全局的SelectionEnvironment设置到了全局颜色样式中去了!是不是很神奇!!!
2.指定图层颜色设置
有时候就是想将某一个图层的选中集样式与其他的图层不一样,所以有了图层的样式设置将IFeatureLayerQI成IFeatureSelection,这个接口中的属性与方法可以设置当前图层的样式,其中SelectionSymbol可以使用axSymbologyControl进行选择设置,关于这个控件的使用,在Arcgis二次开发的Sample里面有较好的示例代码。