2015-11-06 9 views
0

Я добавляю точки к серии асинхронно, и именно поэтому я теряю стандартное масштабирование оксиплотов. Я хочу восстановить его в функции ZoomFunction(), но как я могу получить максимальные и минимальные значения Y от PlotModel.Series за PlotModel.Axes[1].Zoom()?Получить серию из PlotModel

namespace WpfApplication2 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 

     public MainWindow() 
     { 
      InitializeComponent(); 
      DataContext = new Data(); 
     } 
    } 

    public class Data 
    { 
     public PlotModel PlotModel {get;set;} 

     public Data() 
     { 
      PlotModel = new PlotModel(); 
      AddAxes(PlotModel); 
      AddHistoryAsync(PlotModel); 
     } 

     public void AddHistoryAsync(PlotModel PlotModel) 
     { 
      Action<PlotModel> History = new Action<PlotModel>(AddHistory); 
      IAsyncResult result = History.BeginInvoke(PlotModel, null, null); 
     } 

     public void AddAxes(PlotModel PlotModel) 
     { 
      var XAxis = new LinearAxis 
      { 
       Position = AxisPosition.Bottom 
      }; 
      var YAxis = new LinearAxis 
      { 
       Position = AxisPosition.Left 
      }; 
      PlotModel.Axes.Add(XAxis); 
      PlotModel.Axes.Add(YAxis); 
     } 

     public void AddHistory(PlotModel PlotModel) 
     { 
      System.Threading.Thread.Sleep(3000); 
      Random rnd = new Random(); 

      LineSeries LS = new LineSeries(); 
      for (int i = 0; i < 10; i++) 
      { 
       LS.Points.Add(new DataPoint(i, rnd.Next(1,100))); 
      } 
      PlotModel.Series.Add(LS); 
      ZoomFunction(PlotModel); 
      PlotModel.InvalidatePlot(false); 
     } 

     public void ZoomFunction(PlotModel PlotModel) 
     { 

     } 
    } 
} 

ответ

0

Вы попробовали Axes.Reset()? Это приведет к сбросу осей графика, и Oxyplot автоматически увеличит масштаб, чтобы все данные были снова отображены.

public void ZoomFunction(PlotModel PlotModel) 
{ 
    foreach (var axes in PlotModel.Axes) 
    { 
     axes.Reset(); 
    } 
    PlotModel.InvalidatePlot(true); 
} 

Надеюсь, это поможет!

 Смежные вопросы

  • Нет связанных вопросов^_^