• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

gisoracle

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

ArcGIS Pro二次开发-放大缩小工具

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ArcGIS.Core.CIM;
using ArcGIS.Core.Data;
using ArcGIS.Core.Geometry;
using ArcGIS.Desktop.Catalog;
using ArcGIS.Desktop.Core;
using ArcGIS.Desktop.Editing;
using ArcGIS.Desktop.Extensions;
using ArcGIS.Desktop.Framework;
using ArcGIS.Desktop.Framework.Contracts;
using ArcGIS.Desktop.Framework.Dialogs;
using ArcGIS.Desktop.Framework.Threading.Tasks;
using ArcGIS.Desktop.Mapping;



using System.Windows.Input;





namespace ProAppModule1
{
    internal class MapToolSelect : MapTool
    {
        public MapToolSelect()

        {

           

        }
        protected override Task OnToolActivateAsync(bool active)

        {

            return base.OnToolActivateAsync(active);

        }



        protected override void OnToolMouseDown(MapViewMouseButtonEventArgs e)

        {

            // On mouse down check if the mouse button pressed is:

            // the left mouse button to handle zoom in

            // or the right mouse button to handle zoom out

            // If it is handle the event.

            switch (e.ChangedButton)

            {

                case MouseButton.Right:

                    e.Handled = true;

                    break;

                case MouseButton.Left:

                    e.Handled = true;

                    break;

            }

        }



        protected override Task HandleMouseDownAsync(MapViewMouseButtonEventArgs e)

        {

            // Get the map coordinates from the click point and change the Camera to zoom in or out.

            return QueuedTask.Run(() =>

            {

                var mapClickPnt = MapView.Active.ClientToMap(e.ClientPoint);

                ActiveMapView.LookAt(mapClickPnt, TimeSpan.FromSeconds(1));

                // zoom out

                if (e.ChangedButton == MouseButton.Right)

                {

                    ActiveMapView.ZoomOutFixed(TimeSpan.FromSeconds(1));

                }

                // zoom in

                else if (e.ChangedButton == MouseButton.Left)

                {

                    ActiveMapView.ZoomInFixed(TimeSpan.FromSeconds(1));

                }

            });

        }



        protected override void OnToolKeyDown(MapViewKeyEventArgs k)

        {

            // using key up and down in order to zoom out and in

            // if those keys are used we need to mark them as handled

            if (k.Key == Key.Up || k.Key == Key.Down)

                k.Handled = true;

            base.OnToolKeyDown(k);

        }



        protected override Task HandleKeyDownAsync(MapViewKeyEventArgs k)

        {

            // only called when 'handled' in OnToolKeyDown

            if (k.Key == Key.Up)

            {

                // Key.Up => zoom out

                return ActiveMapView.ZoomOutFixedAsync(TimeSpan.FromSeconds(1));

            }

            // Key.Down => zoom in

            //else if (k.Key == Key.Down)

            {

                return ActiveMapView.ZoomInFixedAsync(TimeSpan.FromSeconds(1));

            }
           

        }

    }


}

 

posted on 2020-03-11 15:22  gisai  阅读(674)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3