C# 使用动态数据显示绘制折线图?

C# 使用动态数据显示绘制折线图?,c#,wpf,dynamic-data-display,C#,Wpf,Dynamic Data Display,我可以使用动态数据显示绘制折线图吗 在我的应用程序中,我需要绘制实时电压/时间图。我的要求是,只有当电压不是0时,我才应该绘制图形线 我怎样才能做到这一点 我尝试了以下方法: public partial class MainWindow : Window { public ObservableDataSource<Point> source1 = null; public ObservableDataSource<Point> s

我可以使用动态数据显示绘制折线图吗

在我的应用程序中,我需要绘制实时
电压/时间图。我的要求是,只有当电压不是
0
时,我才应该绘制图形线

我怎样才能做到这一点

我尝试了以下方法:

public partial class MainWindow : Window
    {
        public ObservableDataSource<Point> source1 = null;
        public ObservableDataSource<Point> source2 = null;
        public ObservableDataSource<Point> source3 = null;
        public ObservableDataSource<Point> source4 = null;
        public ObservableDataSource<Point> source5 = null;
        public MainWindow()
        {
            InitializeComponent();
            this.Loaded += MainWindow_Loaded;
        }

        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {        
            source1 = new ObservableDataSource<Point>();
            source2 = new ObservableDataSource<Point>();
            source3 = new ObservableDataSource<Point>();
            source4 = new ObservableDataSource<Point>();
            source5 = new ObservableDataSource<Point>();
            source1.SetXYMapping(p => p);

            testchart.AddLineGraph(source1, 1, "Data row");
            testchart.AddLineGraph(source2, Color.FromRgb(7, 10, 67), 1, "Data row");
            testchart.AddLineGraph(source3, Color.FromRgb(6, 5, 5), 1, "Data row");
            testchart.AddLineGraph(source4, Color.FromRgb(10, 6, 7), 1, "Data row");
            testchart.AddLineGraph(source5, Color.FromRgb(20, 8, 9), 1, "Data row");
            testchart.Viewport.FitToView();
            Thread simThread = new Thread(new ThreadStart(Simulation));
            simThread.IsBackground = true;
            simThread.Start();
        }

        private void Simulation()
        {
            int i = 0;
            while (true)
            {
                Point p1 = new Point(i * 10, i*10);
                if (i % 2 == 0)//here i tried to break first line in the graph
                {
                    source1.AppendAsync(Dispatcher, p1);
                }
                else
                {
                    Point p5 = new Point(Math.Sign(i*10),i*10);
                    source5.AppendAsync(Dispatcher, p5);
                }

                Point p2 = new Point(i *50, i*10);
                source2.AppendAsync(Dispatcher, p2);
                Point p3 = new Point(i * 1000, i);
                source3.AppendAsync(Dispatcher, p3);
                Point p4 = new Point(i * 1500, i);
                source4.AppendAsync(Dispatcher, p4);
                i++;
                Thread.Sleep(1000);

            }
        }
公共部分类主窗口:窗口
{
public observedatasource source1=null;
public observedatasource source2=null;
public observedatasource source3=null;
public observedatasource source4=null;
public observedatasource source5=null;
公共主窗口()
{
初始化组件();
this.Loaded+=主窗口\u Loaded;
}
已加载私有void主窗口(对象发送器、路由目标)
{        
source1=新的ObservableDataSource();
source2=新的ObservableDataSource();
source3=新的ObservableDataSource();
source4=新的ObservableDataSource();
source5=新的ObservableDataSource();
source1.SetXYMapping(p=>p);
AddLineGraph(source1,1,“数据行”);
AddLineGraph(source2,Color.FromRgb(7,10,67),1,“数据行”);
AddLineGraph(source3,Color.FromRgb(6,5,5),1,“数据行”);
AddLineGraph(source4,Color.FromRgb(10,6,7),1,“数据行”);
AddLineGraph(source5,Color.FromRgb(20,8,9),1,“数据行”);
testchart.Viewport.FitToView();
线程simThread=新线程(新线程开始(模拟));
simThread.IsBackground=true;
simThread.Start();
}
私有void模拟()
{
int i=0;
while(true)
{
点p1=新点(i*10,i*10);
if(i%2==0)//这里我试图打断图中的第一行
{
source1.AppendAsync(调度程序,p1);
}
其他的
{
点p5=新点(数学符号(i*10),i*10);
source5.AppendAsync(Dispatcher,p5);
}
点p2=新点(i*50,i*10);
source2.AppendAsync(Dispatcher,p2);
点p3=新点(i*1000,i);
source3.AppendAsync(调度器,p3);
点p4=新点(i*1500,i);
source4.AppendAsync(调度程序,p4);
i++;
睡眠(1000);
}
}

您需要的是一个类,用于显示新的可观察数据源(或您可以停止显示新点的适配器)每当最后一个数据点的Y值大于0时。每当电压为0时,您需要使UI停止侦听该数据源。当电压大于0时,您将触发一个事件并向图表中添加另一个线形图。这是一个测试应用程序。这里我只需使用模拟方法添加点。这是一个图表绘图仪耶,来自Codeplexi cu目前无法访问codeplex来尝试…邪恶代理设置=P…但是ObservedataSource的实现是什么。这是您在做的还是某个库?我认为这是一个包含新数据的事件,图表控件会将它们放在视图上。所以完成此操作的关键是…或者您编写了一个适配器来抑制Y=0的事件