Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 动态CDATA显示D3线图颜色更改_Wpf_Colors_Linegraph_Dynamic Data Display - Fatal编程技术网

Wpf 动态CDATA显示D3线图颜色更改

Wpf 动态CDATA显示D3线图颜色更改,wpf,colors,linegraph,dynamic-data-display,Wpf,Colors,Linegraph,Dynamic Data Display,plotter是一个DynamicDataDisplay.ChatterPlot变量。它添加了两行,如下所示: LineGraph lgChA = plotter.AddLineGraph(dsChA, Colors.Red, 1, "Data"); LineGraph lgChB = plotter.AddLineGraph(dsChB, Colors.Green, 1, "Data"); 图形图是实时更新的,因此我只更新数据源,如下所示: if (_dataXChA != null &

plotter
是一个
DynamicDataDisplay.ChatterPlot
变量。它添加了两行,如下所示:

 LineGraph lgChA = plotter.AddLineGraph(dsChA, Colors.Red, 1, "Data");
 LineGraph lgChB = plotter.AddLineGraph(dsChB, Colors.Green, 1, "Data");
图形图是实时更新的,因此我只更新数据源,如下所示:

if (_dataXChA != null && _dataXChA.Length > 1)
        {
            EnumerableDataSource<double> xChA = new EnumerableDataSource<double>(_dataXChA);
            xChA.SetXMapping(xVal => xVal);

            if (_dataYChA != null && _dataYChA.Length == _dataXChA.Length)
            {
                EnumerableDataSource<double> yChA = new EnumerableDataSource<double>(_dataYChA);
                yChA.SetYMapping(yVal => yVal);
                CompositeDataSource dsChA = new CompositeDataSource(xChA, yChA);
                //((LineGraph)plotter.brus = dsChA; 
                ((LineGraph)plotter.Children.ElementAt(startIndex)).DataSource = dsChA;                    
                plotter.FitToView();
            }
        }

        if (_dataXChB != null && _dataXChB.Length > 1)
        {
            EnumerableDataSource<double> xChB = new EnumerableDataSource<double>(_dataXChB);
            xChB.SetXMapping(xVal => xVal);

            if (_dataYChB != null && _dataYChB.Length == _dataXChB.Length)
            {
                EnumerableDataSource<double> yChB = new EnumerableDataSource<double>(_dataYChB);
                yChB.SetYMapping(yVal => yVal);                    
                CompositeDataSource dsChB = new CompositeDataSource(xChB, yChB);
                ((LineGraph)plotter.Children.ElementAt(startIndex + 1)).DataSource = dsChB; 
                plotter.FitToView();
            }
        }
for (int i = 0; i < LiveImage.MAX_CHANNELS; i++)    // color reset
                {
                    ((LineGraph)plotter.Children.ElementAt(startIndex + i)).LinePen = new Pen(new SolidColorBrush(Colors.Transparent), 1);
            }
if(_dataXChA!=null&&u dataXChA.Length>1)
{
EnumerableDataSource xChA=新的EnumerableDataSource(_dataXChA);
xChA.SetXMapping(xVal=>xVal);
if(_dataYChA!=null&&u dataYChA.Length==u dataXChA.Length)
{
EnumerableDataSource yChA=新的EnumerableDataSource(_dataYChA);
yChA.SetYMapping(yVal=>yVal);
复合数据源dsChA=新的复合数据源(xChA,yChA);
//((线图)plotter.brus=dsChA;
((线图)plotter.Children.ElementAt(startIndex)).DataSource=dsChA;
plotter.FitToView();
}
}
如果(_dataXChB!=null&&u dataXChB.Length>1)
{
EnumerableDataSource xChB=新的EnumerableDataSource(_dataXChB);
xChB.SetXMapping(xVal=>xVal);
if(_dataYChB!=null&&u dataYChB.Length==u dataXChB.Length)
{
EnumerableDataSource yChB=新的EnumerableDataSource(_dataYChB);
yChB.SetYMapping(yVal=>yVal);
复合数据源dsChB=新的复合数据源(xChB,yChB);
((线图)plotter.Children.ElementAt(startIndex+1)).DataSource=dsChB;
plotter.FitToView();
}
}

但我想知道,除了更新数据点之外,我是否还可以更改
LineGraph
变量的画笔颜色?我想应该是在plotter.XXX.color之类的地方?

您可以这样更改线条的颜色:

LineGraph lgChA = plotter.AddLineGraph(dsChA, Colors.Red, 1, "Data");
Pen newColour = new Pen(Brushes.Red, 1.0);
//or whatever colour you want to change it to, second parameter is line thickness
lgChA.LinePen = newColour;

然后,你的线条将更新为你给它的笔的颜色。

因此,基本上,我解决了这个问题,每次重新分配颜色之前,都将颜色设置为透明。类似这样:

if (_dataXChA != null && _dataXChA.Length > 1)
        {
            EnumerableDataSource<double> xChA = new EnumerableDataSource<double>(_dataXChA);
            xChA.SetXMapping(xVal => xVal);

            if (_dataYChA != null && _dataYChA.Length == _dataXChA.Length)
            {
                EnumerableDataSource<double> yChA = new EnumerableDataSource<double>(_dataYChA);
                yChA.SetYMapping(yVal => yVal);
                CompositeDataSource dsChA = new CompositeDataSource(xChA, yChA);
                //((LineGraph)plotter.brus = dsChA; 
                ((LineGraph)plotter.Children.ElementAt(startIndex)).DataSource = dsChA;                    
                plotter.FitToView();
            }
        }

        if (_dataXChB != null && _dataXChB.Length > 1)
        {
            EnumerableDataSource<double> xChB = new EnumerableDataSource<double>(_dataXChB);
            xChB.SetXMapping(xVal => xVal);

            if (_dataYChB != null && _dataYChB.Length == _dataXChB.Length)
            {
                EnumerableDataSource<double> yChB = new EnumerableDataSource<double>(_dataYChB);
                yChB.SetYMapping(yVal => yVal);                    
                CompositeDataSource dsChB = new CompositeDataSource(xChB, yChB);
                ((LineGraph)plotter.Children.ElementAt(startIndex + 1)).DataSource = dsChB; 
                plotter.FitToView();
            }
        }
for (int i = 0; i < LiveImage.MAX_CHANNELS; i++)    // color reset
                {
                    ((LineGraph)plotter.Children.ElementAt(startIndex + i)).LinePen = new Pen(new SolidColorBrush(Colors.Transparent), 1);
            }
for(int i=0;i

关键是不要添加任何折线图。

没有人给出一些指针?任何想法都是值得赞赏的。我不想每次都添加折线图,因为这会消耗资源,尽管理论上它应该是可行的。