예제 #1
0
        /// <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();
        }
예제 #2
0
        /// <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);
            }
        }
예제 #5
0
        //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);
        }