ArcGIS Engine制作DIY地图工具

本节将向你介绍,利用ToolStrip制作自定义GIS工具条。

 

步骤如下:

①向ToolStrip中添加一个Button

②向该Button的lmg属性添加图片素材,并将Button的图片比例(ImageScaling)属性设置为自动适应(SizetoFit),自动调整大小(AutoSzize)为真(True)。最后通过调整ToolStrip的图片尺寸缩放比例(lmageSealingSize)为合适尺寸,例如width:48,height:48,最后再手动调节控件的大小。

③双击Buton,在其单击事件下写代码。

 

本例实现的代码如下:

/// <summary>
/// 放大工具
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ZoomIntoolStripButton1_Click(object sender, EventArgs e)
{
    //当选中为数据制图时
    if (tabControl1.SelectedIndex == 0)
    {
        //ICommand提供对定义COM命令的成员的访问。
        ICommand pCommand = new ControlsMapZoomInToolClass();
        //将ICommand强转成ITool
        ITool pTool = pCommand as ITool;
        //调用ICommand中的OnCreate方法生成放大工具
        pCommand.OnCreate(this.axMapControl1.Object);
        //设置放大工具命令的作用对象为axMapControl1
        this.axMapControl1.CurrentTool = pTool;
    }
    //当选中为布局视图时
    if (tabControl1.SelectedIndex == 1)
    {
        //ICommand提供对定义COM命令的成员的访问。
        ICommand pCommand = new ControlsMapZoomInToolClass();
        //将ICommand强转成ITool
        ITool pTool = pCommand as ITool;
        //调用ICommand中的OnCreate方法生成放大工具
        pCommand.OnCreate(this.axPageLayoutControl1.Object);
        //设置放大工具命令的作用对象为axPageLayoutControl1
        this.axPageLayoutControl1.CurrentTool = pTool;
    }

}
/// <summary>
/// 缩小工具
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ZoomOuttoolStripButton2_Click(object sender, EventArgs e)
{
    //当选中为数据视图时
    if (tabControl1.SelectedIndex == 0)
    {
        ICommand pCommand = new ControlsMapZoomOutToolClass();
        ITool pTool = pCommand as ITool;
        pCommand.OnCreate(this.axMapControl1.Object);
        this.axMapControl1.CurrentTool = pTool;
    }
    //当选中为布局视图时
    if (tabControl1.SelectedIndex == 1)
    {
        ICommand pCommand = new ControlsMapZoomOutToolClass();
        ITool pTool = pCommand as ITool;
        pCommand.OnCreate(this.axPageLayoutControl1.Object);
        this.axPageLayoutControl1.CurrentTool = pTool;
    }
}

/// <summary>
/// 漫游工具
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void PantooltoolStripButton4_Click(object sender, EventArgs e)
{
    //当选中为数据视图时
    if (tabControl1.SelectedIndex == 0)
    {
        ICommand pCommand = new ControlsMapPanToolClass();
        ITool pTool = pCommand as ITool;
        pCommand.OnCreate(this.axMapControl1.Object);
        this.axPageLayoutControl1.CurrentTool = pTool;
    }
    //当选中为布局视图时
    if (tabControl1.SelectedIndex == 1)
    {
        ICommand pCommand = new ControlsMapPanToolClass();
        ITool pTool = pCommand as ITool;
        pCommand.OnCreate(this.axPageLayoutControl1.Object);
        this.axPageLayoutControl1.CurrentTool = pTool;
    }
}

/// <summary>
/// 全图工具
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ZoomFulltoolStripButton3_Click(object sender, EventArgs e)
{
    //当选中为数据视图时
    if (tabControl1.SelectedIndex == 0)
    {
        ICommand pCommand = new ControlsMapFullExtentCommandClass();
        ITool pTool = pCommand as ITool;
        pCommand.OnCreate(this.axMapControl1.Object);
        this.axMapControl1.CurrentTool = pTool;
        pCommand.OnClick();
    }
    //当选中为布局视图时
    if (tabControl1.SelectedIndex == 1)
    {
        ICommand pCommand = new ControlsMapFullExtentCommandClass();
        ITool pTool = pCommand as ITool;
        pCommand.OnCreate(this.axPageLayoutControl1.Object);
        this.axPageLayoutControl1.CurrentTool = pTool;
        pCommand.OnClick();
    }
}
/// <summary>
/// 指针选择工具
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SelecttoolStripButton1_Click(object sender, EventArgs e)
{
    if (tabControl1.SelectedIndex == 0)
    {
        ICommand pCommand = new ControlsSelectFeaturesToolClass();
        ITool pTool = pCommand as ITool;
        pCommand.OnCreate(this.axMapControl1.Object);
        this.axMapControl1.CurrentTool = pTool;
    }
    if (tabControl1.SelectedIndex == 1)
    {
        ICommand pCommand = new ControlsSelectFeaturesToolClass();
        ITool pTool = pCommand as ITool;
        pCommand.OnCreate(this.axPageLayoutControl1.Object);
        this.axPageLayoutControl1.CurrentTool = pTool;
    }
}

 

注:

1、数据视图和布局视图的控件是不同的。

2、全图工具需要添加以下代码,才能生效。

 

pCommand.OnClick();

3、其他工具的制作方法大同小异!


核心DIY工具函数总结:

 

 谢谢观看!本人初学GIS二次开发,如果有不对的地方,请多多包涵!


 

 

posted @ 2019-11-05 09:34  the_path_of_grace  阅读(...)  评论(...编辑  收藏