LoginSignup
8
9

More than 5 years have passed since last update.

OxyPlotのコントロール(PlotView)をリアルタイムにアップデートする方法

Last updated at Posted at 2017-06-06

はじめに

OxyPlotのコントロールPlotViewはバインドしたデータを変更しただけでは更新がされません。
この記事は変更したデータをリアルタイムに反映するための設定の備忘録です。

変更したデータをリアルタイムに反映させる方法

OxyPlotこのページに記述してあります。
(1) PlotViewコントロールのModelプロパティを変更
(2) PlotViewコントロールのInvalidateを呼ぶ
(3) PlotModelInvalidataを呼ぶ

自分で設定したときに、上記説明と違ったので以下に例を載せます。

具体例

PlotViewRefreashExample.cs
var myPlotModel = new PlotModel(); //PlotModelの生成
myPlotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Bottom, Minimum = 0.0, Maximum = 1.0 }); //x軸の設定
myPlotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Minimum = 0.0, Maximum = 1.0 }); // y軸の設定

plotView1.Model = myPlotModel; // --(1) , plotView1はPlotViewコントロール

LineSeries myLine = new LineSeries(); //データインスタンスを生成

myPlotModel.Series.Add(myLine); //データをPlotModelへバインド

for(int i = 0; i < 10; i++)
{

   myLine.Points.Add(new DataPoint(i, i)); //データの変更

   plotView1.Invalidate(); // --(2) , ここでデータの変更が反映され、PlotViewが更新される

   myPlotModel.Axes.Clear(); // 軸の変更のため、以前の設定をクリア
   myPlotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Bottom, Minimum = 0.0, Maximum = i }); //x軸の設定
   myPlotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Minimum = 0.0 , Maximum = i }); //y軸の設定
   myPlotModel.InvalidatePlot(true); // -- (3) , ここで軸設定が反映され、PlotViewが更新される

}

例に示したように、PlotViewコントロールのInvalidateを呼ぶだけでは、軸の設定は反映されないので注意してください。

8
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9