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