zoukankan      html  css  js  c++  java
  • 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));
    
                }
               
    
            }
    
        }
    
    
    }
  • 相关阅读:
    IoC和AoP
    学习树
    Avalon Framework概念
    java利用WatchService实时监控某个目录下的文件变化并按行解析
    [DBT-08001] 无法检查可用内存。
    C#之http协议与soap协议之间的区别
    C#之ActionResult 详解
    C#实现连接池
    C#MVC之传入字典的模型项为 null,但此字典需要类型“System.Decimal”的非 null 模型项。
    Func的介绍
  • 原文地址:https://www.cnblogs.com/gisoracle/p/12462626.html
Copyright © 2011-2022 走看看