ArcEngine视图小工具

1.工具栏常用工具

在这里插入图片描述
以下将按照ArcGIS工具栏工具依次给出常用工具的调用方法

/// <summary>
///     放大地图
/// </summary>
/// <param name="control"></param>
public void ZoomIn(dynamic control)
{
   ICommand pCommand = new ControlsMapZoomInToolClass();
   pCommand.OnCreate(control.Object);
   control.CurrentTool = pCommand as ITool;
}

/// <summary>
///     缩小地图
/// </summary>
/// <param name="control"></param>
public void ZoomOut(dynamic control)
{
   ICommand pCommand = new ControlsMapZoomOutToolClass();
   pCommand.OnCreate(control.Object);
   control.CurrentTool = pCommand as ITool;
}

/// <summary>
///     地图平移
/// </summary>
/// <param name="control"></param>
public void Pan(dynamic control)
{
   ICommand pCommand = new ControlsMapPanToolClass();
   pCommand.OnCreate(control.Object);
   control.CurrentTool = pCommand as ITool;
}

/// <summary>
///     显示全图
/// </summary>
/// <param name="control"></param>
public static void FullExtent(dynamic control)
{
   var pCommand = new ControlsMapFullExtentCommandClass();
   pCommand.OnCreate(control.Object);
   pCommand.OnClick();
}


/// <summary>
///     逐级放大
/// </summary>
/// <param name="control"></param>
public static void ZoomInFixed(dynamic control)
{
   ICommand pCommand = new ControlsMapZoomInFixedCommandClass();
   pCommand.OnCreate(control.Object);
   pCommand.OnClick();
}

/// <summary>
///     逐级缩小
/// </summary>
/// <param name="control"></param>
public static void ZoomOutFixed(dynamic control)
{
   ICommand pCommand = new ControlsMapZoomOutFixedCommandClass();
   pCommand.OnCreate(control.Object);
   pCommand.OnClick();
}

/// <summary>
///     前一视图
/// </summary>
/// <param name="control"></param>
public static void LastExtentBack(dynamic control)
{
   ICommand pCommand = new ControlsMapZoomToLastExtentBackCommandClass();
   pCommand.OnCreate(control.Object);
   pCommand.OnClick();
}

/// <summary>
///     后一视图
/// </summary>
/// <param name="control"></param>
public static void LastExtentForward(dynamic control)
{
   ICommand pCommand = new ControlsMapZoomToLastExtentForwardCommandClass();
   pCommand.OnCreate(control.Object);
   pCommand.OnClick();
}

/// <summary>
///     刷新地图
/// </summary>
/// <param name="control"></param>
public static void Refresh(dynamic control)
{
   ICommand pCommand = new ControlsMapRefreshViewCommandClass();
   pCommand.OnCreate(control.Object);
   pCommand.OnClick();
}
/// <summary>
///  要素选择
/// </summary>
/// <param name="control"></param>
public static void SelectFeature(dynamic control)
{
   ICommand pCommand = new ControlsSelectFeaturesToolClass();
   pCommand.OnCreate(control.Object);
   control.CurrentTool = (ITool)pCommand;
}
/// <summary>
/// 清除选择
/// </summary>
/// <param name="control"></param>
/// <param name="isDeactiveTool">是否重置地图工具</param>
public static void ClearSelect(dynamic control, bool isDeactiveTool = true)
{
   ICommand pCommand = new ControlsClearSelectionCommandClass();
   pCommand.OnCreate(control.Object);
   pCommand.OnClick();
}

/// <summary>
/// 选择元素
/// </summary>
/// <param name="sender"></param>
public void SelectElement(AxPageLayoutControl layoutControl)
{
   ICommand pCommand = new ControlsSelectToolClass();
   pCommand.OnCreate(layoutControl.Object);
   layoutControl.CurrentTool = pCommand as ITool;
}

/// <summary>
///     识别
/// </summary>
/// <param name="control"></param>
public static void Identity(dynamic control)
{
   ICommand pCommand = new ControlsMapIdentifyToolClass();
   pCommand.OnCreate(control.Object);
   control.CurrentTool = (ITool)pCommand;
}
/// <summary>
///  测量
/// </summary>
/// <param name="control"></param>
public static void Measure(dynamic control)
{
   ICommand pCommand = new ControlsMapMeasureToolClass();
   pCommand.OnCreate(control.Object);
   control.CurrentTool = (ITool)pCommand;
}

2.数据相关工具

/// <summary>
/// 添加数据
/// </summary>
/// <param name="control"></param>
public static void AddData(dynamic control)
{
   var pCommand = new ControlsAddDataCommandClass();
   pCommand.OnCreate(control.Object);
   pCommand.OnClick();
}

/// <summary>
///     打开MXD
/// </summary>
/// <param name="control"></param>
public static void OpenMxd(dynamic control)
{
   ICommand pCommand = new ControlsOpenDocCommandClass();
   pCommand.OnCreate(control.Object);
   pCommand.OnClick();
}
/// <summary>
///     导出MXD
/// </summary>
/// <param name="control"></param>
public static void SaveAsMxd(dynamic control)
{
   ICommand pCommand = new ControlsSaveAsDocCommandClass();
   pCommand.OnCreate(control.Object);
   pCommand.OnClick();
}

3.几何相关工具

/// <summary>
/// 画折线
/// </summary>
private void DrawBrokenLine(dynamic control)
{
   ICommand pCommand = new ControlsNewLineToolClass();
   pCommand.OnCreate(control.Object);
   control.CurrentTool = pCommand as ITool;
}

/// <summary>
/// 画曲线
/// </summary>
private void DrwCurve(dynamic control)
{

   ICommand pCommand = new ControlsNewCurveToolClass();
   pCommand.OnCreate(control.Object);
   control.CurrentTool = pCommand as ITool;
}

/// <summary>
/// 画多边形
/// </summary>
private void DrawPolygon(dynamic control)
{
   ICommand pCommand = new ControlsNewPolygonToolClass();
   pCommand.OnCreate(control.Object);
   control.CurrentTool = pCommand as ITool;
}

/// <summary>
/// 画矩形
/// </summary>
private void DrawRectangle(dynamic control)
{
   ICommand pCommand = new ControlsNewRectangleToolClass();
   pCommand.OnCreate(control.Object);
   control.CurrentTool = pCommand as ITool;
}

/// <summary>
/// 画圆
/// </summary>
private void DrawCircle(dynamic control)
{
   ICommand pCommand = new ControlsNewCircleToolClass();
   pCommand.OnCreate(control.Object);
   control.CurrentTool = pCommand as ITool;
}

4.后记

大部分情况下,直接调用原生工具会获得更高的效率,但很多时候,原生工具在灵活性、美观性、功能完整性上往往无法满足项目需求,因此,很多时候我们需要进行工具的重写,这将会在之后几章陆续推出,敬请期待~~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShirmyMao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值