0

DynamicDataDisplay を使用してリアルタイム信号をプロットしています。チャートにマーカーと線の両方を表示したいので、使用する必要があると思いますLineAndMarker<MarkerPointsGraph>。xy データが更新されるとき、私のロジックは、グラフの線を追加するのではなく、日付ソースのみを更新することです。その場合でも、データが大きくて更新が速い場合はパフォーマンスが得られます。私の質問は次のとおりです。 の DataSource ドメインが表示されないためLineAndMarker<MarkerPointsGraph>、データを更新する方法がわかりません。LineGraphの代わりに使用した例を次に示しLineAndMarker<MarkerPointsGraph>ます。しかし、LineGraphマーカーを処理していないようです。

for (int i = 0; i < _nColorChannels; i++)
{
    if (_dataX[i].Length == _dataY[i].Length)
    {
        EnumerableDataSource<int> xOneCh = new EnumerableDataSource<int>(_dataX[i]);
        xOneCh.SetXMapping(xVal => xVal);
        EnumerableDataSource<int> yOneCh = new EnumerableDataSource<int>(_dataY[i]);
        yOneCh.SetYMapping(yVal => yVal);
        CompositeDataSource ds = new CompositeDataSource(xOneCh, yOneCh);

        Action UpdateData = delegate()
        {
            ((LineGraph)plotter.Children.ElementAt(startIndex + i)).DataSource = ds;

        };

        this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal,
                               UpdateData);
    }
}

どんな提案でも大歓迎です。ありがとうございました。ニック

少し更新: DataSource があるようですが、できるインスタンスMarkerPointsGraphを作成するにはどうすればよいですか? バージョンの作成方法のようなもの:MarkerPointsGraphAddLineGraph()LineGraph

LineGraph lg = new LineGraph();
lg = plotter.AddLineGraph(dsOneCh, _lineprofileColor[i], marker, "Data");
4

1 に答える 1

0

このようなもの:

if (_dataX[i].Length == _dataY[i].Length)
                    {
                        EnumerableDataSource<int> xOneCh = new EnumerableDataSource<int>(_dataX[i]);
                        xOneCh.SetXMapping(xVal => xVal);
                        EnumerableDataSource<int> yOneCh = new EnumerableDataSource<int>(_dataY[i]);
                        yOneCh.SetYMapping(yVal => yVal);
                        CompositeDataSource ds = new CompositeDataSource(xOneCh, yOneCh);

                        Action UpdateData = delegate()
                        {

                            ((PointsGraphBase)plotter.Children.ElementAt(startIndex + i + 1)).DataSource = ds; 

                        };

                    this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, UpdateData);
                }

キャストするPointsGraphBase

于 2013-02-14T22:14:38.917 に答える