【问题标题】:Real time data graph for form application with oxyplot使用 oxyplot 进行表单应用的实时数据图
【发布时间】:2016-03-31 03:59:31
【问题描述】:

我在表单应用程序中处理实时数据。我的数据将实时工作,它会像示波器波一样滑动。

我该怎么做?我只是在图书馆文档中看到 Wpf 示例,但我必须使用表单应用程序。

我是 oxyplot 的新手。如果我错了,请见谅

如果您建议,我也可以使用另一个图形库。

提前致谢

【问题讨论】:

  • 问题是什么?

标签: oxyplot


【解决方案1】:

我假设您正在使用 Visual Studio 创建 WinForms 应用程序。如果是这种情况,我将使用工具箱中数据下的图表工具而不是 OxyPlot。当您拖动它时,默认名称将是 Chart1。它还将添加一个通用系列。以下函数将生成平滑曲线:

    private void GenerateCurve()
    {
        chart1.ChartAreas[0].Position.Auto = true;
        chart1.ChartAreas[0].AxisY.Title = "SIN()";
        chart1.ChartAreas[0].AxisX.Title = "Degrees";

        // Set graph limits
        chart1.ChartAreas[0].AxisX.Minimum = 0;
        chart1.ChartAreas[0].AxisX.Maximum = 200;
        chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
        chart1.ChartAreas[0].AxisX.IntervalAutoMode = System.Windows.Forms.DataVisualization.Charting.IntervalAutoMode.FixedCount;
        chart1.ChartAreas[0].AxisX.Interval = 90;
        chart1.ChartAreas[0].AxisX.MinorTickMark.Enabled = true;
        chart1.ChartAreas[0].AxisX.MinorTickMark.Interval = 10;

        chart1.ChartAreas[0].AxisY.Minimum = -1;
        chart1.ChartAreas[0].AxisY.Maximum = 1;
        chart1.ChartAreas[0].AxisY.MajorGrid.Enabled = false;
        chart1.ChartAreas[0].AxisY.IntervalAutoMode = System.Windows.Forms.DataVisualization.Charting.IntervalAutoMode.FixedCount;
        chart1.ChartAreas[0].AxisY.Interval = .1;
        chart1.ChartAreas[0].AxisY.MinorTickMark.Enabled = true;

        // Set spline instead of line
        chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;

        // Generate points
        for (int x = 0; x < 1000; x++)
        {
            double y = Math.Sin(x);
            chart1.Series[0].Points.AddXY((double)x, Math.Sin(x));
            if (chart1.Series[0].Points.Count > 100)
            {
                chart1.Series[0].Points.RemoveAt(0);
                chart1.ChartAreas[0].AxisX.Minimum = chart1.Series[0].Points[0].XValue;
                chart1.ChartAreas[0].AxisX.Maximum = x;
                Application.DoEvents();
                System.Threading.Thread.Sleep(100);
            }
        }
    }

【讨论】:

    猜你喜欢
    • 2011-11-27
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    相关资源
    最近更新 更多