在DeepEarth中,地图的拖放行为用于规范用户在操作地图的时候的选择、移动和绘制等操作模型。DeepEarth以枚举结构将其封装在地图控件(Map)的内部,源代码如下:

代码

/// <summary>
/// 地图拖放行为
/// </summary>
public enum DragBehavior
{
    /// <summary>
    /// 鼠标成手型图标点在地图上拖放,地图的呈现随同鼠标的拖动进行移动并定位于鼠标释放的位置。
    /// </summary>
    Pan,

/// <summary>
    ///在地图上通过选择绘制出一个选框图形,当鼠标释放选择的时候将地图放大级别显示。
    /// </summary>
    Select,

/// <summary>
    /// 在地图上绘制图形。
    /// </summary>
    Draw
}

  在DeepEarth中的拖放行为默认被定义为鼠标拖放行为,当用户在所呈现的地图上操作地图的时候,鼠标成手型图标点在地图上拖放地图,当鼠标释放拖动并将地图定位于鼠标释放拖动的地图位置。默认的拖放行为在源代码中被定义为如下:

//地图拖放行为
private DragBehavior _DragMode = DragBehavior.Pan;

  上面对地图的拖放行为进行了简单的描述,下面我们来看看如何在开发中使用地图的拖放行为,我们可以在界面上放置一个Button来做个实验,通过点击按钮实现切换地图拖放行为的功能:

代码

/// <summary>
/// 改变地图的拖放行为
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDragBehavior_Click(object sender, RoutedEventArgs e)
{
    //判断当前地图的拖放模式--实现两种模式之间切换
    switch (mapInstance.DragMode)
    {
        case Map.DragBehavior.Pan:
            mapInstance.DragMode = Map.DragBehavior.Select;
            ToolTipService.SetToolTip(btnDragBehavior, "切换到选择放大模式");
            btnDragBehavior.Content = "选择";
            break;
        case Map.DragBehavior.Select:
            mapInstance.DragMode = Map.DragBehavior.Pan;
            ToolTipService.SetToolTip(btnDragBehavior, "切换到拖放平移模式");
            btnDragBehavior.Content = "拖放";
            break;
    }
}

  上面代码块思路非常清晰,通过当前地图的拖放行为进行判断,交替设置地图的拖放行为,编译程序后运行效果如下图所示:

        

  

  按扭放在地图中间不太好看,我们可以通过上一篇《探索DeepEarth的内置控件》中所介绍的方法将拖放模式的切换触发功能按扭移置到功能导航菜单上去,这样整体看上去的感觉就大不一样了。

        

  这里改变了下界面布局,将原来直接适用按钮显示文字的方式更改为适用图片的方式, 通过不同的拖放行为来操作地图,此功能的切换实现非常方便、简单,但却非常适用。我们可以通过扩展地图的拖放行为实现很多功能,比如在地图上插标、选点、框选等复杂的操作,本文暂时不做介绍,在后续相关文章里在详细介绍如何实现这些功能。

版权说明

本文属原创文章,欢迎转载且注明文章出处,其版权归作者和博客园共有。

作      者:Beniao

文章出处:http://beniao.cnblogs.com/  或  http://www.cnblogs.com/

转载于:https://www.cnblogs.com/beniao/archive/2010/01/27/1657265.html

DeepEarth中的拖放行为(DragBehavior)相关推荐

  1. Silverlight Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)

    Silverlight & Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior) 原文:Silverlight & Blend动画设计系列八: ...

  2. keras 香草编码器_完善纯香草javascript中的拖放

    keras 香草编码器 Drag-and-drop functionality is the bread and butter of a modern web UX. It's an aspect o ...

  3. 如何在 JavaScript 中实现拖放

    来源:http://www.javaeye.com/post/152142 译者说明: 终于完成了全文的翻译,由于时间比较参促,文章没有过多的校正与润色,阅读过程中难免会有些许生硬或不准确的感觉,请大 ...

  4. PyCharm入门教程——在编辑器中使用拖放

    PyCharm最新版本下载 JetBrains PyCharm是一种Python IDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具.此外,该IDE提供了一些高级功能,以用于 ...

  5. java 拖拽目录_Java 7:如何在Java中实现拖放?

    我正在尝试使用 Java 7 Update 21进行拖放. 我的目标操作系统是: > Windows 7 > Ubuntu 12.04 > Mac OSX 10.6 / 10.8 要 ...

  6. Transferable 在 SwiftUI 中实现拖放的初体验 Swift 中的游戏规则改变者协议(教程含源码)

    在 WWDC 2022 和其他有趣的公告中,Apple 在 Swift 中展示了一个名为Transferable的新协议.简而言之,Transferable 使得在同一应用程序内的不同位置甚至不同应用 ...

  7. 向窗体中拖放图片并显示

    Frm_Main.cs View Code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentMo ...

  8. winform listview 设置选中项 图片_实战PyQt5: 069-MV框架中的项视图拖放功能

    模型-视图框架完全支持Qt的基本拖放操作,列表.树形和表格部件中的项可以在视图间拖动,数据可以以MIME类型的格式进行导入和导出 Qt提供的标准视图自动支持在视图内部的拖放,其中的项可以被移动以改变显 ...

  9. 禁止拖放对象文本被选择

    禁止拖放对象文本被选择的方法:  1.ie中设置拖放对象的onselectstart返回false,在ff中设置样式MozUserSelect(css:-moz-user-select)为none.  ...

最新文章

  1. 渗透测试集成环境Faraday
  2. 重建包含快照的vmdk描述文件。
  3. html 保存xlsx,HTML SaveXLSX按钮防止将数据保存到SlickGrid的XLSX文件中
  4. 瀑布式开发、迭代式开发、螺旋开发、敏捷开发四种开发模式的区别
  5. D(X)=E(X^2)-E^2(X)
  6. IOS 开发环境,证书和授权文件等详解
  7. kill -0 pid是做什么用的?
  8. BZOJ5292 洛谷4457 LOJ2513:[BJOI2018]治疗之雨——题解
  9. 线程的组成 java 1615387415
  10. python使用repeat、cycle重复打印字符串
  11. xubuntu16.04是linux系统,win10建立Ubuntu16.04子系统,安装经常使用软件以及图形界面(包括win10远程桌面链接Ubuntu)...
  12. 图像相减的matlab仿真及光栅滤波法,图像相减的MATLAB 仿真及光栅滤波法实验实现...
  13. Shell脚本学习-阶段六-密钥的批量分发与执行
  14. 拯救Ubuntu环境变量搞蹦导致命令使用不了的办法
  15. 医护人员计算机专业培训内容,电子病历-住院医生工作站的前期培训
  16. 圣诞节计算机老师贺卡祝福语,[圣诞节贺卡教师祝福语]2020圣诞节贺卡祝福语
  17. Hibernate手动控制事物
  18. vim 去掉黄色阴影
  19. 学java用哪个翻译器好_英语翻译器软件哪个好?用这两款就对了
  20. 细数二十世纪最伟大的10大算法(Top10)

热门文章

  1. ***必须要掌握的计算机知识
  2. servlet之servletResponse
  3. Oracle条件查询语句-where
  4. Codeforces 458C - Elections
  5. [Angularjs]ng-repeat中使用ng-model遇到的问题
  6. 动手完善个性化弹出提示框的过程及乐趣
  7. Leetcode 905. 按奇偶排序数组
  8. 城联数据TSM技术方案起底
  9. apache2部署django以及静态文件
  10. 刷题向》关于一道比较优秀的递推型DP(openjudge9275)(EASY+)