天天看點

DeepEarth中的拖放行為(DragBehavior)

 在DeepEarth中,地圖的拖放行為用于規範使用者在操作地圖的時候的選擇、移動和繪制等操作模型。DeepEarth以枚舉結構将其封裝在地圖控件(Map)的内部,源代碼如下:

代碼

/// <summary>

/// 地圖拖放行為

/// </summary>

public enum DragBehavior

{

    /// <summary>

    /// 滑鼠成手型圖示點在地圖上拖放,地圖的呈現随同滑鼠的拖動進行移動并定位于滑鼠釋放的位置。

    /// </summary>

    Pan,

    ///在地圖上通過選擇繪制出一個選框圖形,當滑鼠釋放選擇的時候将地圖放大級别顯示。

    Select,

    /// 在地圖上繪制圖形。

    Draw

}

  在DeepEarth中的拖放行為預設被定義為滑鼠拖放行為,當使用者在所呈現的地圖上操作地圖的時候,滑鼠成手型圖示點在地圖上拖放地圖,當滑鼠釋放拖動并将地圖定位于滑鼠釋放拖動的地圖位置。預設的拖放行為在源代碼中被定義為如下:

//地圖拖放行為

private DragBehavior _DragMode = DragBehavior.Pan;

  上面對地圖的拖放行為進行了簡單的描述,下面我們來看看如何在開發中使用地圖的拖放行為,我們可以在界面上放置一個Button來做個實驗,通過點選按鈕實作切換地圖拖放行為的功能:

/// 改變地圖的拖放行為

/// <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 = "拖放";

    }

  上面代碼塊思路非常清晰,通過目前地圖的拖放行為進行判斷,交替設定地圖的拖放行為,編譯程式後運作效果如下圖所示:

        

  

         

  這裡改變了下界面布局,将原來直接适用按鈕顯示文字的方式更改為适用圖檔的方式, 通過不同的拖放行為來操作地圖,此功能的切換實作非常友善、簡單,但卻非常适用。我們可以通過擴充地圖的拖放行為實作很多功能,比如在地圖上插标、選點、框選等複雜的操作,本文暫時不做介紹,在後續相關文章裡在詳細介紹如何實作這些功能。

本文轉自 beniao 51CTO部落格,原文連結:http://blog.51cto.com/beniao/281380,如需轉載請自行聯系原作者

繼續閱讀