国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

WPF中手寫地圖控件(3)——動態(tài)加載地圖圖片

這篇具有很好參考價值的文章主要介紹了WPF中手寫地圖控件(3)——動態(tài)加載地圖圖片。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

瓦片增加一個Loading動畫

可以查看我的另一個博客WPF中自定義Loading圖

從中心擴散

進行從里到外的擴散,方向是上左下右。如下圖所示
WPF中手寫地圖控件(3)——動態(tài)加載地圖圖片,C#,WPF,地圖,wpf

于是我們可以定義一個擁有坐標X跟Y的集合,他允許這個集合,內(nèi)部使用枚舉器的MoveNext自動排序,中心的在前,外面在后。文章來源地址http://www.zghlxwxcb.cn/news/detail-667797.html

public class SpiralArray : IEnumerable<(int, int)>
{

    protected (int, int) Range;

    public SpiralArray((int, int) range)
    {
        Range = range;
    }

    public IEnumerator<(int, int)> GetEnumerator()
    {
        return new SpiralArrayIEnumerator(Range);
    }

    IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}

public class SpiralArrayIEnumerator : IEnumerator<(int, int)>
{
    public int Start;
    public int End;

    public int CenterX;
    public int CenterY;

    private bool IsOver = false;
    private int Direction = 0;// 0 上 1 左 2 : 下 3 : 右
    private int Step = 0;
    private int CurrentMoveSteps = 0;
    private int ChangedDirectionTimes = 0;  //改變方向次數(shù)
    /// <summary>
    /// 構(gòu)造函數(shù)
    /// </summary>
    /// <param name="range"></param>
    public SpiralArrayIEnumerator((int, int) range)
    {
        Start = range.Item1;
        End = range.Item2;
        Reset();
    }
    public (int, int) Current { get; set; }
    object IEnumerator.Current => Current;
    public void Dispose()
    {

    }

    public bool MoveNext()
    {
        if(Step == 0)
        {
            Current = (CenterX, CenterY);
            CurrentMoveSteps = 0;
            Step = 1;
            return true;
        }
        else
        {
            // 走一步
            CurrentMoveSteps++;
            // 改變方向
            if(CurrentMoveSteps > Step)
            {
                Direction = (Direction + 1) % 4;
                CurrentMoveSteps = 1;
                ChangedDirectionTimes++;
                if(ChangedDirectionTimes >= 2)
                {
                    // 步長 + 1
                    Step++;
                    ChangedDirectionTimes = 0;
                }
            }
            Move();
            if(Current.Item1 >= End || Current.Item2 >= End || Current.Item1 < Start || Current.Item2 < Start)
                return false;
            return true;
        }
    }
    /// <summary>
    /// 移動一步
    /// </summary>
    private void Move()
    {
        switch (Direction)
        {
            // 上
            case 0:
                Current = (Current.Item1, Current.Item2 - 1);
                break;
            // 左
            case 1:
                Current = (Current.Item1 - 1, Current.Item2);
                break;
            // 下
            case 2:
                Current = (Current.Item1, Current.Item2 + 1);
                break;
            // 右
            case 3:
                Current = (Current.Item1 + 1, Current.Item2);
                break;
            default:
                break;
        }
    }

    public void Reset()
    {
        CenterX = (End + Start) / 2;
        CenterY = (End + Start) / 2;
        Current = (CenterX, CenterY);
        Direction = 0;
        Step = 0;
        ChangedDirectionTimes = 0;
        IsOver = false;
    }
}

到了這里,關(guān)于WPF中手寫地圖控件(3)——動態(tài)加載地圖圖片的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • WPF --- 如何重寫WPF原生控件樣式

    上一篇中 WPF --- 重寫DataGrid樣式,因新產(chǎn)品UI需要,重寫了一下微軟 WPF 原生的 DataGrid 的樣式,包含如下內(nèi)容: 基礎(chǔ)設(shè)置,一些基本背景色,字體顏色等。 滾動條樣式。 實現(xiàn)圓角表格,重寫表格的一些基礎(chǔ)樣式,例如 CellStyle , RowStyle , RowHeaderStyle , ColumnHeaderStyle 等。 重寫過

    2024年02月05日
    瀏覽(34)
  • WPF(一) WPF基本控件與布局

    WPF(一) WPF基本控件與布局

    ? WPF(Windows Presentation Foundation)是微軟推出的基于Windows的用戶界面框架,中文譯為“Windows呈現(xiàn)基礎(chǔ)”,屬于.NET Framework 3.0的一部分。WPF類似于WinForm技術(shù)框架,但是相比于WinForm,WPF對大部分基礎(chǔ)功能進行了更加強大的拓展,并且引入了XAML標記語言,真正實現(xiàn)了開發(fā)人員和設(shè)

    2024年02月02日
    瀏覽(24)
  • WPF 組態(tài)軟件實現(xiàn)思路(WPF控件可視化布局)

    WPF 組態(tài)軟件實現(xiàn)思路(WPF控件可視化布局)

    一、實現(xiàn)控件選中及自由拖動 二、實現(xiàn)控件對齊功能 三、實現(xiàn)對齊輔助線功能 四、實現(xiàn)框選功能 GitHub地址點此 屬性編輯控件基于Devexpress V21.2.3 控件庫,如需編譯需購買及安裝 Devexpress V21.2.3 開發(fā)庫 腳本編輯基于AvalonEdit開源庫 https://github.com/icsharpcode/AvalonEdit 圖標控件基于

    2024年02月04日
    瀏覽(66)
  • WPF中用戶控件和自定義控件

    WPF中用戶控件和自定義控件

    無論是在WPF中還是WinForm中,都有用戶控件(UserControl)和自定義控件(CustomControl),這兩種控件都是對已有控件的封裝,實現(xiàn)功能重用。但是兩者還是有一些區(qū)別,本文對這兩種控件進行講解。 用戶控件 注重復(fù)合控件的使用,也就是多個現(xiàn)有控件組成一個可復(fù)用的控件組

    2024年01月21日
    瀏覽(27)
  • wpf控件上移下移,調(diào)整子集控件顯示順序
  • WPF自定義控件

    WPF自定義控件

    方式一:基于現(xiàn)有控件進行擴展,如基于button進行擴展,UI可直接用xmal進行編輯設(shè)計,邏輯用xaml.cs進行編輯 方法二:直接創(chuàng)建wpf自定義控件 本文用方法二開展自定義控件?。?! 1.自定義控件的內(nèi)容在代碼cs文件中,自定義控件繼承自Control,ui界面可在Genric.xaml中定義。 2.在

    2024年02月11日
    瀏覽(30)
  • WPF自定義按鈕控件

    WPF自定義按鈕控件

    在平時的WPF應(yīng)用中,系統(tǒng)提供的按鈕控件確實可以實現(xiàn)正常的邏輯,但是從視覺方面看的話,確實不夠美觀,而且每個項目的UI設(shè)計不盡相同。那么自定義按鈕控件就是必須的了,網(wǎng)上查找了很多自定義按鈕控件的辦法,但每次都是寫到一半就報錯。在參考了多個技術(shù)貼之后

    2024年02月08日
    瀏覽(22)
  • WPF 搜索框控件樣式

    WPF 搜索框控件樣式

    完全通過Xaml代碼實現(xiàn),使用了UserControl進行封裝。功能包括聚焦時控件展開,輸入為空時的文字提示,以及待選提示項列表等效果。實現(xiàn)效果如下圖: xaml代碼 后臺代碼: 控件使用顯示示例:

    2024年02月16日
    瀏覽(20)
  • 【W(wǎng)PF】獲取父控件數(shù)據(jù)

    https://www.cnblogs.com/-Timosthetic/p/16021865.html

    2024年02月20日
    瀏覽(13)
  • WPF控件模板2

    在控件模板和為其提供支持的代碼之間有一個隱含約定。如果使用自定義控件模板替代控件的標準模板,就需要確保新模板能夠滿足控件的實現(xiàn)代碼的所有需要。 在簡單控件中,這個過程就比較容易,因為對模板幾乎沒有(或者完全沒有)什么真正的要求。對于復(fù)雜控件,問

    2024年02月07日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包