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)); } } } }
分类:
ArcGIS Pro二次开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2019-03-11 arcgis 获得工具箱工具的个数
2018-03-11 excel 鼠标上下左右移动
2018-03-11 excel 批注