/// <summary>
        /// 几何闪烁,实现ArcMap的闪烁效果
        /// </summary>
        /// <param name="mapControl"></param>
        /// <param name="geometry"></param>
        /// <param name="bZoom">是否缩放到指定几何,默认不缩放</param>
        public void Flash(IMapControl4 mapControl, IGeometry geometry, bool bZoom = false)
        {
            if (geometry == null || geometry.IsEmpty)
            {
                return;
            }
            IHookHelper hookHelper = new HookHelperClass();

            hookHelper.Hook = mapControl;
            IHookActions hookActions = hookHelper as IHookActions;

            if (bZoom) //先缩放
            {
                hookActions.DoAction(geometry, esriHookActions.esriHookActionsZoom);
                hookHelper.ActiveView.ScreenDisplay.UpdateWindow();
            }
            //再闪烁
            if (hookActions.get_ActionSupported(geometry, esriHookActions.esriHookActionsFlash))
            {
                hookActions.DoAction(geometry, esriHookActions.esriHookActionsFlash);
            }
        }
예제 #2
0
        /// <summary>
        /// 显示节点的信息
        /// </summary>
        /// <param name="node"></param>
        private void ShowClickedNodeInfo(TreeNode nodeClicked, bool doFlash)
        {
            if (nodeClicked == null)
            {
                //初始化树型显示窗口
                InitializeAttributesList();
                return;
            }
            //获取点击点对应的要素
            int nodeLevel = nodeClicked.Level;
            //获取点击的是图层还是图层下的要素
            //若featureIndex < 0则表示点击的是图层,闪烁图层下选中的所有要素
            //反之,则表示点击的是图层下的要素,获取图层索引和要素索引,
            //用于在结果列表中安索引获取要素或要素集属性
            int layerIndex = -1;    int featureIndex = -1;

            if (nodeLevel > 0)
            {
                TreeNode parentNode = nodeClicked.Parent;
                layerIndex   = parentNode.Index;
                featureIndex = nodeClicked.Index;
            }
            else
            {
                layerIndex = nodeClicked.Index;
            }
            //获取对应要素
            LayerIdentifiedResult layerResult = identifiedResultsList[layerIndex];

            //点击了图层下的要素
            if (featureIndex > -1)
            {
                IFeatureIdentifyObj identifyObjDefault = layerResult.IdentifiedFeatureObjList[featureIndex];
                IFeature            featureDefault     = (identifyObjDefault as IRowIdentifyObject).Row as IFeature;
                //显示属性
                ShowFeatureAttributes(featureDefault);
                //判断是否闪烁要素

                if (doFlash)
                {
                    HookHelperClass hookHelper = new HookHelperClass();
                    hookHelper.Hook = MainForm.Instance.AxMapCtrl.Object;

                    IHookActions hookAction = (IHookActions)hookHelper;
                    hookAction.DoAction(featureDefault.Shape, esriHookActions.esriHookActionsPan);
                    Application.DoEvents();
                    hookAction.DoAction(featureDefault.Shape, esriHookActions.esriHookActionsFlash);
                    //IIdentifyObj identifyObj = identifyObjDefault as IIdentifyObj;
                    //if (identifyObj != null)
                    //{
                    //    // identifyObj.Flash(associateMapControl.ActiveView.ScreenDisplay);
                    //    // identifyObj.Flash(MapUtils.GetActiveView().ScreenDisplay);
                    //}
                }
            }
            //点击了图层,同时闪烁图层下的所有要素图形
            else
            {
                flashObjects.FlashObjects(layerResult);
            }
        }