学习ArcObjects 帮助 .NET遇到问题(五)自定义子类型命令和工具

一、关键步骤

        1. 分别创建命令类(Base Command)和工具类(Base Tool)。

                

                2. 创建子类型命令或工具时,实现简单的 ICommandSubType 接口会更容易。
 public sealed class ZoomInCommands : BaseCommand, ICommandSubType
public sealed class PolyFeedbackTools : BaseTool, ICommandSubType
        3.ICommandSubType 接口包含两个方法 - GetCount 和 SetSubType。

        GetCount通过返回此类包含的命令数。

        ICommandSubType 中最重要的方法是 SetSubType。将为每个必需项创建子类型命令或工具的单独实例,并在实例化后设置其子类型。任何实例的子类型在实例的整个生命周期内都保持不变,但因实例而异。将传递给 SetSubType 的值另存为成员变量,以便可以相应地完成 ICommand 和 ITool 的成员。

        4.设置命令或工具属性。使用 case 语句确定要查询的子类型;除此之外,像完成任何其他命令一样完成成员。
 public void SetSubType(int SubType)
         {
             //Set up bitmap, caption, tooltip etc.
             if (base.Bitmap == 0)
             {
                 switch (SubType)
                 {
                     case 1:
                         base.m_bitmap = Properties.Resources.FeedBack3;
                         break;
                     case 2:
                         base.m_bitmap = Properties.Resources.FeedBack4;
                         break;
                     case 3:
                         base.m_bitmap = Properties.Resources.FeedBack5;
                         break;
                 }
             }
 ​
             base.m_name = string.Format("CSNETSamples_SubTypeTool{0}", SubType);
 ​
             m_maxSides = SubType + 2; //3, 4 or 5 sides
             base.m_caption = string.Format("{0} sides feedback (C#)", m_maxSides);
             base.m_toolTip = string.Format("{0} sides feedback", m_maxSides);
             base.m_message = string.Format("Tool demonstrating {0} sides polygon feedback", m_maxSides);
         }
        5.完成命令或工具的其他成员。通常,无论子类型如何,都可以对 OnCreate 方法进行编码。
     6. 对于命令,请按当前子类型处理 OnClick 方法。对于工具OnMouseDown、OnMouseMove。

二、主要接口和类说明

  1.         INewPolygonFeedback接口(Display)

        提供对控制新面显示反馈的成员的访问。NewPolygonFeedback 的使用和行为类似于 NewLineFeedback;但是,显示和返回的几何图形是闭合多边形。这意味着当调用 Stop 时,起点将再次添加为终点,从而关闭形状。反馈中至少应添加三点。在使用 Start 添加第一个点后,必须至少调用 AddPoint 两次;否则返回 Null 值。成员有Display 反馈对象将使用的显示;Start 在给定点开始正常反馈;AddPoint 在给定点创建节点; MoveTo移动到新点;Stop停止反馈并返回形状。

        IArea接口(Geometry)

        提供对返回环和面共有属性的成员的访问。使用 IArea 接口获取几何体的面积。它还可用于获取几何图形的质心点和标签点。

        ICommandBar接口(Framework

        提供对修改命令栏的成员的访问。CommandBar 是应用程序中的工具栏、菜单栏、菜单或上下文菜单。使用 ICommandBar 接口将命令、菜单或宏项添加到现有命令栏。还可以使用此界面在应用程序中放置命令栏。方法有Find在此命令栏上查找命令。

        ICommandItem接口(Framework

        提供对定义命令项的成员的访问。CommandItem 是命令栏上的任何项。例如,显示在命令栏上的按钮、工具和菜单项都是命令项。ICommandItem 接口允许您获取或设置命令项的属性,例如标题、按钮图像、状态栏消息、工具提示、显示样式、帮助上下文 ID 等。ICommandItem 接口还提供了用于执行、删除、刷新和重置命令项的方法。使用 ICommandBars::FindICommandBar::FindICommandBar::Item 获取对特定命令项的引用。方法有Execute 使命令执行。

  • 33
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值