基于C#的ArcEngine二次开发56:双击属性表跳转目标要素并闪烁

简介: 基于C#的ArcEngine二次开发56:双击属性表跳转目标要素并闪烁

      结合IHookActions的DoAction方法并搭上esriHookActionsFlash动作,这样做效果很接近arcmap中的效果,速度也比较快。Action方面有6个constant,可以根据需要选择

image.png

代码思路:

  • 获取要素的objectID,根据ID选出要素
  • 通过IHookActions闪烁要素

源代码:

private void LocatePoint(DataGridViewCellEventArgs e)
{
            int rowNO = e.RowIndex;
            if (rowNO >= 0)
            {
                int TowerObjectID = int.Parse(this.dataGridView.Rows[rowNO].Cells[0].Value.ToString());
                IQueryFilter pQueryFilter = new QueryFilterClass();
                pQueryFilter.WhereClause = "TowerObjectID=" + TowerObjectID;
                IFeatureCursor pFeatureCursor = _pFeatureLayerTower.Search(pQueryFilter, false);
                IFeature pFeature = pFeatureCursor.NextFeature();
                if (pFeature != null)
                {
                    IArray geoArray = new ArrayClass();
                    geoArray.Add(pFeature.ShapeCopy);
                    //通过IHookActions闪烁要素集合 
                    HookHelperClass m_pHookHelper = new HookHelperClass();
                    m_pHookHelper.Hook = this.mapContainer.MapControl.Object;
                    IHookActions hookActions = (IHookActions)m_pHookHelper;
                    hookActions.DoActionOnMultiple(geoArray, esriHookActions.esriHookActionsPan);
                    //hookActions.DoActionOnMultiple(geoArray, esriHookActions.esriHookActionsGraphic);
                    //hookActions.DoActionOnMultiple(geoArray, esriHookActions.esriHookActionsZoom);
                    //hookActions.DoActionOnMultiple(geoArray, esriHookActions.esriHookActionsCallout); 
                    Application.DoEvents();
                    m_pHookHelper.ActiveView.ScreenDisplay.UpdateWindow();
                    hookActions.DoActionOnMultiple(geoArray, esriHookActions.esriHookActionsFlash);
                }
            }       
}
相关文章
|
7月前
|
C#
C#拾遗补漏之goto跳转语句
在我们日常工作中常用的C#跳转语句有break、continue、return,但是还有一个C#跳转语句很多同学可能都比较的陌生就是goto,今天大姚带大家一起来认识一下goto语句及其它的优缺点。
|
7月前
|
C#
25.C#跳转语句的学习
25.C#跳转语句的学习
65 0
|
7月前
|
开发框架 .NET 编译器
C# 9.0中的目标类型新表达式:类型推断的又一进步
【1月更文挑战第16天】C# 9.0引入了目标类型新表达式,这是类型推断功能的一个重要扩展。通过目标类型新表达式,开发者在创建对象时可以省略类型名称,编译器会根据上下文自动推断所需类型。这一特性不仅简化了代码编写,还提高了代码的可读性和维护性。本文将详细介绍目标类型新表达式的语法、使用场景及其对C#编程的影响。
|
缓存 C# UED
【机房合作】在C#中 解决窗体加载时闪烁问题
【机房合作】在C#中 解决窗体加载时闪烁问题
197 0
基于C#的ArcEngine二次开发54:IStatusBar状态栏接口的使用
基于C#的ArcEngine二次开发54:IStatusBar状态栏接口的使用
基于C#的ArcEngine二次开发54:IStatusBar状态栏接口的使用
|
NoSQL C#
基于C#的ArcEngine二次开发57:每用户订阅上的所有人SID 不存在
基于C#的ArcEngine二次开发57:每用户订阅上的所有人SID 不存在
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
36 3
|
5天前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
36 12
|
1月前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
52 4