DynamicDataDisplay 绘制实时曲线图和沿X轴移动的效果

本篇将利用DynamicDataDisplay 在WPF 中动态生成随机数图表,实现动态生成曲线图。

新建项目将DynamicDataDisplay.dll 加载到引用中

在这里插入图片描述
打开MainWindow.xaml 添加命名空间xmlns:d3=“http://research.microsoft.com/DynamicDataDisplay/1.0”。

在这里插入图片描述
通过d3:ChartPlotter 创建一个图表框架,在其中添加两条整型坐标轴,X轴:d3:HorizontalIntegerAxis,Y轴:d3:VerticalIntegerAxis。d3:Header 用来设置图表名称,d3:VerticalAxisTitle 用来设置Y轴名称。
在这里插入图片描述

直接附上后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Research.DynamicDataDisplay.DataSources;
using Microsoft.Research.DynamicDataDisplay;
using System.Threading;
using System.Windows.Threading;


namespace 练习_折线图
{
    
    
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
    
    
        public MainWindow()
        {
    
    
            InitializeComponent();
            init();
        }

        private void init()
        {
    
    
            timer.Interval = TimeSpan.FromSeconds(1);
            timer.Tick += Timer_Tick;
            ch1.AddLineGraph(op1,Colors.Blue,2,"随机数");//线条,颜色,宽度,名称

        }
        Point p;
        int i = 0;
        Random r = new Random();
        private void Timer_Tick(object sender, EventArgs e)
        {
    
    
            i++;
            int val = r.Next(20, 40);  //生成20-40的随机数      
            p = new Point(i, val);
            op1.AppendAsync(base.Dispatcher, p);
                if (i > 20)
                    ch1.Visible = new Rect(i - 20, 10, 20, 30);//x,y,width,height   这里移动视口i-20要在i大于20的时候进行,否则x的坐标就为负值
        }

        DispatcherTimer timer = new DispatcherTimer();
        ObservableDataSource<Point> op1 = new ObservableDataSource<Point>();
        private void button_Click(object sender, RoutedEventArgs e)
        {
    
    
            timer.Start();//启动定时器
        }
    }
}

最后来看一下效果
在这里插入图片描述

说下DynamicDataDisplay资源在哪里找,百度一下你就知道。
谢谢浏览。

猜你喜欢

转载自blog.csdn.net/weixin_43482353/article/details/103212729
今日推荐