基于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);
                }
            }       
}
相关文章
|
6月前
|
C#
C#拾遗补漏之goto跳转语句
在我们日常工作中常用的C#跳转语句有break、continue、return,但是还有一个C#跳转语句很多同学可能都比较的陌生就是goto,今天大姚带大家一起来认识一下goto语句及其它的优缺点。
|
6月前
|
C#
25.C#跳转语句的学习
25.C#跳转语句的学习
56 0
|
6月前
|
开发框架 .NET 编译器
C# 9.0中的目标类型新表达式:类型推断的又一进步
【1月更文挑战第16天】C# 9.0引入了目标类型新表达式,这是类型推断功能的一个重要扩展。通过目标类型新表达式,开发者在创建对象时可以省略类型名称,编译器会根据上下文自动推断所需类型。这一特性不仅简化了代码编写,还提高了代码的可读性和维护性。本文将详细介绍目标类型新表达式的语法、使用场景及其对C#编程的影响。
|
缓存 C# UED
【机房合作】在C#中 解决窗体加载时闪烁问题
【机房合作】在C#中 解决窗体加载时闪烁问题
173 0
基于C#的ArcEngine二次开发54:IStatusBar状态栏接口的使用
基于C#的ArcEngine二次开发54:IStatusBar状态栏接口的使用
基于C#的ArcEngine二次开发54:IStatusBar状态栏接口的使用
|
NoSQL C#
基于C#的ArcEngine二次开发57:每用户订阅上的所有人SID 不存在
基于C#的ArcEngine二次开发57:每用户订阅上的所有人SID 不存在
|
6月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
192 3
|
16天前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
29 3
|
1月前
|
安全 C# 数据安全/隐私保护
实现C#编程文件夹加锁保护
【10月更文挑战第16天】本文介绍了两种用 C# 实现文件夹保护的方法:一是通过设置文件系统权限,阻止普通用户访问;二是使用加密技术,对文件夹中的文件进行加密,防止未授权访问。提供了示例代码和使用方法,适用于不同安全需求的场景。
104 0