/// <summary> /// 闪烁选中图斑 /// </summary> /// <param name="featureCursor"></param> private void FlashPolygons(IFeatureCursor featureCursor) { IArray geoArray = new ArrayClass(); IFeature feature = null; while ((feature = featureCursor.NextFeature()) != null) { //feature是循环外指针,所以必须用ShapeCopy geoArray.Add(feature.ShapeCopy); } //通过IHookActions闪烁要素集合 HookHelperClass m_pHookHelper = new HookHelperClass(); m_pHookHelper.Hook = m_MapControl.Object; IHookActions hookActions = (IHookActions)m_pHookHelper; hookActions.DoActionOnMultiple(geoArray, esriHookActions.esriHookActionsPan); System.Windows.Forms.Application.DoEvents(); m_pHookHelper.ActiveView.ScreenDisplay.UpdateWindow(); hookActions.DoActionOnMultiple(geoArray, esriHookActions.esriHookActionsFlash); System.Windows.Forms.Application.DoEvents(); m_pHookHelper.ActiveView.ScreenDisplay.UpdateWindow(); }
/// <summary> /// 多个要素同时闪烁 add by xisheng 2011.07.01 /// </summary> private void DefaultSelNde() { Application.DoEvents(); IArray geoArray = new ArrayClass(); for (int i = 0; i < this.advTree.Nodes.Count; i++) { if (!this.advTree.Nodes[i].HasChildNodes) { continue; } for (int j = 0; j < this.advTree.Nodes[i].Nodes.Count; j++) { IFeature pFeature = this.advTree.Nodes[i].Nodes[j].Tag as IFeature; geoArray.Add(pFeature); } } if (geoArray == null) { return; } HookHelperClass hookHelper = new HookHelperClass(); hookHelper.Hook = m_pMapControl.Object; IHookActions hookAction = (IHookActions)hookHelper; hookAction.DoActionOnMultiple(geoArray, esriHookActions.esriHookActionsFlash); }
private void FlashAndIdentify(IArray inArray) { try { if (inArray == null) { return; } HookHelperClass hookHelper = new HookHelperClass(); hookHelper.Hook = MyMapControl.Object; IHookActions hookAction = (IHookActions)hookHelper; hookAction.DoActionOnMultiple(inArray, esriHookActions.esriHookActionsFlash); } catch (Exception exc) { MessageBox.Show(exc.Message); } }
public override void OnClick() { IHookActions hookActions = null; IBasicMap basicMap = null; //Get basic map and set hook actions if (m_hookHelper != null) { basicMap = m_hookHelper.FocusMap as IBasicMap; hookActions = m_hookHelper as IHookActions; } else if (m_globeHookHelper != null) { basicMap = m_globeHookHelper.Globe as IBasicMap; hookActions = m_globeHookHelper as IHookActions; } //Get feature selection ISelection selection = basicMap.FeatureSelection; //Get enumerator IEnumFeature enumFeature = selection as IEnumFeature; enumFeature.Reset(); //Set first feature IFeature feature; feature = enumFeature.Next(); //Loop though the features IArray array = new ESRI.ArcGIS.esriSystem.Array(); while (feature != null) { //Add feature to array array.Add(feature.Shape); //Set next feature feature = enumFeature.Next(); } //If the action is supported perform the action if (hookActions.get_ActionSupportedOnMultiple(array, esriHookActions.esriHookActionsZoom)) { hookActions.DoActionOnMultiple(array, esriHookActions.esriHookActionsZoom); } }
//buffer查询并闪烁。 public static void BufferSelectAndFlash(IMapControl4 mapCtrl, IGeometry baseGeo, esriSpatialRelEnum spatialRef, ILayer layer) { IFeatureLayer featureLayer = layer as IFeatureLayer; if (mapCtrl == null || featureLayer == null) { return; } IFeatureClass fC = featureLayer.FeatureClass; ISpatialFilter pFilter = new SpatialFilterClass(); pFilter.Geometry = baseGeo; pFilter.GeometryField = "SHAPE"; pFilter.SpatialRel = spatialRef; IFeatureCursor pFeatureCursor = fC.Search(pFilter, false); IArray inArray = new ArrayClass(); IFeature fe = pFeatureCursor.NextFeature(); mapCtrl.Map.ClearSelection(); while (fe != null) { inArray.Add(fe); mapCtrl.Map.SelectFeature(layer, fe); fe = pFeatureCursor.NextFeature(); } if (inArray == null) { return; } HookHelper m_hookHelper = new HookHelperClass(); m_hookHelper.Hook = mapCtrl.Object; IHookActions hookAction = (IHookActions)m_hookHelper; ICommand cmd = new ControlsZoomToSelectedCommandClass(); cmd.OnCreate(m_hookHelper.Hook); cmd.OnClick(); Application.DoEvents(); hookAction.DoActionOnMultiple(inArray, esriHookActions.esriHookActionsFlash); }