实时图表 AddRange 不适用于数组或系列集合
Live Charts AddRange not working with arrays or Series Collection
我正在尝试使用 Live Charts Geared WPF 创建尽可能轻的实时绘图仪,每秒采样大约 125 个点。定期逐点添加效果很好,只是 CPU 利用率太高了。
我想一次画几个点,从缓冲区中读取值,类似于网站示例:
var temporalCv = new double[1000];
for (var i = 0; i < 1000; i++){
temporalCv[i] = 5;
}
var cv = new ChartValues<double>();
cv.AddRange(temporalCv);
示例本身不会引发任何问题。
但是,当我想将 AddRange
转换为 ChartValues
和下面的 GearedValues
时,它会抛出无法从 double[]
转换为 Systems.Collections.Generic.IEnumerable<Object>
。
SeriesCollection = new SeriesCollection
{
new GLineSeries
{
Title = "Pressure",
Values = new GearedValues<double> {},
},
new LineSeries
{
Title = "Pulse",
Values = new ChartValues<double> { },
}
};
SeriesCollection[1].Values.AddRange(temporalCv);
我也试过将数组更改为 GearedValue<double>
类型,但是当我想向数组添加双精度值时它仍然会抛出问题。
是否有转换 double[]
或其他方法将多个点一起添加到图中而不删除旧点?
欢迎来到 Stack Overflow!
看来其他人已经在这里问过类似的问题:Convert List<double> to LiveCharts.IChartValues
您需要先将 double[]
转换为 IEnumerable<double>
,然后才能将其转换为 IChartValues
collection。这可以通过 System.Linq
:
中的 ToList
扩展方法轻松完成
using System.Linq;
...
var chartValues = temporalCv.ToList().AsChartValues();
SeriesCollection[1].Values.AddRange(chartValues);
我没有 LiveCharts,所以无法直接测试。您可能只需要将 temporalCv
转换为列表,让 AddRange
完成剩下的工作:
var chartValues = temporalCv.ToList();
我正在尝试使用 Live Charts Geared WPF 创建尽可能轻的实时绘图仪,每秒采样大约 125 个点。定期逐点添加效果很好,只是 CPU 利用率太高了。
我想一次画几个点,从缓冲区中读取值,类似于网站示例:
var temporalCv = new double[1000];
for (var i = 0; i < 1000; i++){
temporalCv[i] = 5;
}
var cv = new ChartValues<double>();
cv.AddRange(temporalCv);
示例本身不会引发任何问题。
但是,当我想将 AddRange
转换为 ChartValues
和下面的 GearedValues
时,它会抛出无法从 double[]
转换为 Systems.Collections.Generic.IEnumerable<Object>
。
SeriesCollection = new SeriesCollection
{
new GLineSeries
{
Title = "Pressure",
Values = new GearedValues<double> {},
},
new LineSeries
{
Title = "Pulse",
Values = new ChartValues<double> { },
}
};
SeriesCollection[1].Values.AddRange(temporalCv);
我也试过将数组更改为 GearedValue<double>
类型,但是当我想向数组添加双精度值时它仍然会抛出问题。
是否有转换 double[]
或其他方法将多个点一起添加到图中而不删除旧点?
欢迎来到 Stack Overflow!
看来其他人已经在这里问过类似的问题:Convert List<double> to LiveCharts.IChartValues
您需要先将 double[]
转换为 IEnumerable<double>
,然后才能将其转换为 IChartValues
collection。这可以通过 System.Linq
:
ToList
扩展方法轻松完成
using System.Linq;
...
var chartValues = temporalCv.ToList().AsChartValues();
SeriesCollection[1].Values.AddRange(chartValues);
我没有 LiveCharts,所以无法直接测试。您可能只需要将 temporalCv
转换为列表,让 AddRange
完成剩下的工作:
var chartValues = temporalCv.ToList();