zoukankan      html  css  js  c++  java
  • 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二次开发,如果有不对的地方,请多多包涵!

    
    
    
    
  • 相关阅读:
    宏观经济指标
    线程与进程 concurrent.futures模块
    python 进程和线程(2)
    进程和线程(1)
    C++学习
    原则阅读笔记
    python类(3)感悟
    python类(2)
    打新股技巧
    python连接数据库
  • 原文地址:https://www.cnblogs.com/edcoder/p/11796495.html
Copyright © 2011-2022 走看看