2016-03-09 9 views
0

Работаю в режиме реального времени в форме приложения. Мои данные будут работать в режиме реального времени и будут скользить как волны осциллографа.График данных в реальном времени для применения формы с оксидом

Как я могу это сделать? Я просто вижу пример Wpf в библиотечных документах, но мне нужно работать с формой приложения.

Я новичок в оксиплоте. Извините, если я ошибаюсь

Также я могу использовать другую библиотеку графов, если вы предлагаете.

Заранее спасибо

+0

В чем проблема? –

ответ

0

Я предполагаю, что вы используете Visual Studio Создание приложения WinForms. Если в этом случае я использовал инструмент Chart, найденный в Data в панели инструментов, а не 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); 
      } 
     } 
    } 
Смежные вопросы