最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

WPF利用ScottPlot實現(xiàn)動態(tài)繪制圖像

 更新時間:2023年12月19日 09:00:51   作者:微小冷  
ScottPlot是基于.Net的一款開源免費的交互式可視化庫,支持Winform和WPF等UI框架,本文主要為大家詳細介紹了如何WPF如何使用ScottPlot實現(xiàn)動態(tài)繪制圖像,需要的可以參考下

單擊移動

在了解ScottPlot的繪圖邏輯之后,在WPF中生成動態(tài)圖像簡直輕而易舉,只需不斷地刪除舊圖而繪制新圖即可。

新建一個按鈕,綁定下面的函數(shù)

ScatterPlot dynSinPlot;
int dynClick = 0;

private void btnDynSin_Click(object sender, RoutedEventArgs e)
{
    var xs = Enumerable.Range(0, 100).Select(x => x / 10.0).ToArray();
    double shift = dynClick / 10.0;
    var ys = xs.Select(x => Math.Sin(x+shift)).ToArray();
    dynClick += 1;

    plt.Plot.Remove(dynSinPlot);
    dynSinPlot = plt.Plot.AddScatter(xs, ys, label: "sin");
    plt.Plot.Legend();
    plt.Refresh();
}

其中,dynClick用于計數(shù),以調(diào)整正弦函數(shù)的相位,這個函數(shù)的功能為,每點擊一次按鈕,正弦圖像便相左移動0.1 0.10.1弧度。效果如下

多線程

這種需要通過單擊才能更改圖像的方案,顯然不是我們所希望的,但自動的動態(tài)繪圖函數(shù),其實并不屬于scottPlot的功能,而需要使用C#的多線程。

首先,新建一個動態(tài)余弦繪制函數(shù),其相位取決于當前的時間戳??紤]到我們將在新的線程中調(diào)用這個函數(shù),所以函數(shù)中在使用WPF對象時,需要在Dispatchar.Invoke中以委托的形式進行。

ScatterPlot dynCosPlot;

private void dynCos()
{
    double t = DateTime.Now.Ticks/1000000.0;
    Console.WriteLine(t);
    var xs = Enumerable.Range(0, 100).Select(x => x / 10.0).ToArray();
    var ys = xs.Select(x => Math.Cos(x + t)).ToArray();

    Dispatcher.Invoke(() =>
    {
        plt.Plot.Remove(dynCosPlot);

        dynCosPlot = plt.Plot.AddScatter(xs, ys, label: "cos");
        plt.Plot.Legend();
        plt.Refresh();
    });
}

然后把這個函數(shù)放在一個循環(huán)中,為了能夠自由控制動態(tài)繪圖,這個函數(shù)需要傳入一個tocken,并寫在循環(huán)的判斷條件中。

private void TaskDynCosLoop(CancellationToken token)
{
    while (!token.IsCancellationRequested)
    {
        dynCos();
        Task.Delay(10);
    }
}

最后添加一個按鈕,綁定下列動態(tài)繪圖函數(shù),每次點擊,都翻轉(zhuǎn)一次布爾型的drawDynCos,若翻轉(zhuǎn)后drawDynCos為True,則開啟動態(tài)繪圖,通過工廠方法開啟一個新的線程;若反轉(zhuǎn)后為False,則取消Tocken,從而中止繪圖。

bool drawDynCos = false;
CancellationTokenSource dynCts;

private void btnDynCos_Click(object sender, RoutedEventArgs e)
{
    drawDynCos = ! drawDynCos;
    if (drawDynCos)
    {
        dynCts = new CancellationTokenSource();
        Task.Factory.StartNew(
            ()=> TaskDynCosLoop(dynCts.Token));
    }
    else
    {
        dynCts.Cancel();
    }
}

效果如下

到此這篇關于WPF利用ScottPlot實現(xiàn)動態(tài)繪制圖像的文章就介紹到這了,更多相關WPF ScottPlot繪制圖像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#編程實現(xiàn)連接SQL SERVER數(shù)據(jù)庫實例詳解

    C#編程實現(xiàn)連接SQL SERVER數(shù)據(jù)庫實例詳解

    這篇文章主要介紹了C#編程實現(xiàn)連接SQL SERVER數(shù)據(jù)庫的方法,以實例形式較為詳細的分析了C#連接SQL SERVER數(shù)據(jù)庫的相關步驟與具體實現(xiàn)技巧,需要的朋友可以參考下
    2015-11-11
  • c# 9.0新特性nint和Pattern matching的使用方法

    c# 9.0新特性nint和Pattern matching的使用方法

    這篇文章主要介紹了c# 9.0新特性nint和Pattern matching的使用方法,文中講解非常細致,幫助你更好的學習c# 9.0,有需求的朋友可以參考下
    2020-06-06
  • WPF實現(xiàn)繪制扇形統(tǒng)計圖的示例代碼

    WPF實現(xiàn)繪制扇形統(tǒng)計圖的示例代碼

    這篇文章主要介紹了如何利用WPF繪制扇形統(tǒng)計圖,文中的示例代碼講解詳細,對我們學習或工作有一定幫助,感興趣的小伙伴可以了解一下
    2022-09-09
  • WPF實現(xiàn)Interaction框架的Behavior擴展

    WPF實現(xiàn)Interaction框架的Behavior擴展

    這篇文章介紹了WPF實現(xiàn)Interaction框架Behavior擴展的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 使用C#與SQL Server數(shù)據(jù)庫進行交互的詳細步驟

    使用C#與SQL Server數(shù)據(jù)庫進行交互的詳細步驟

    在C#中與數(shù)據(jù)庫進行交互,通常使用ADO.NET(ActiveX Data Objects .NET)框架,ADO.NET是.NET Framework中用于數(shù)據(jù)訪問的一組類庫,它提供了多種用于連接和操作數(shù)據(jù)庫的方法,以下是使用C#與SQL Server數(shù)據(jù)庫進行交互的詳細步驟,需要的朋友可以參考下
    2024-08-08
  • WCF的異常處理

    WCF的異常處理

    這篇文章介紹了WCF處理異常的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#多線程爬蟲抓取免費代理IP的示例代碼

    C#多線程爬蟲抓取免費代理IP的示例代碼

    本篇文章主要介紹了C#多線程爬蟲抓取免費代理IP的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • C#中Shear的用法實例

    C#中Shear的用法實例

    這篇文章主要介紹了C#中Shear的用法,實例分析了C#中使用Matrix實現(xiàn)Shear剪切變換的相關技巧,需要的朋友可以參考下
    2015-06-06
  • 使用C#自制一個Windows安裝包的詳細過程

    使用C#自制一個Windows安裝包的詳細過程

    這篇文章主要介紹了如何使用C#自制一個Windows安裝包,文中通過圖文結(jié)合的方式給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-07-07
  • C#如何讓winform程序中的輸入文本框保留上次的輸入

    C#如何讓winform程序中的輸入文本框保留上次的輸入

    這篇文章主要介紹了C#如何讓winform程序中的輸入文本框保留上次的輸入問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評論

确山县| 兰州市| 昭通市| 安岳县| 策勒县| 台北市| 浪卡子县| 长海县| 安徽省| 行唐县| 麟游县| 阳江市| 板桥市| 连江县| 邯郸市| 台州市| 永寿县| 同江市| 长顺县| 任丘市| 英山县| 沧源| 调兵山市| 云南省| 商都县| 江陵县| 海淀区| 新宁县| 积石山| 襄垣县| 贵溪市| 彭水| 长岭县| 诸城市| 资溪县| 资兴市| 吉木乃县| 吉首市| 惠来县| 商城县| 依安县|