gpt4 book ai didi

wpf - LiveCharts WPF 渲染性能不佳

转载 作者:行者123 更新时间:2023-12-03 17:36:51 28 4
gpt4 key购买 nike

我正在构建一个 WPF 工具,用于可视化冷藏容器(冷藏容器)的数据。非常简单的传感器数据图(温度、设定点、湿度)。
问题是渲染性能。
数据通过 REST API 以极快的速度加载。将值重新格式化为 DateTimePoints(需要 1 毫秒)后,它们会在绑定(bind)的 SeriesCollection 上设置为齿轮值。设置值后,应用程序立即卡住 10 秒,卡顿地呈现图表,整个应用程序不再可用。
我处理了所有示例和演示,但我无法让 LiveCharts 以可用的方式执行,我不知道我在这里做错了什么

笛卡尔图
3x GStepLineSeries,(在这种情况下)每个系列有 626 个值
XAxisFormatter 日期时间点

我不知道我做错了什么。 1900 GearedValues 值是否过多? LiveCharts有那么糟糕吗?

CartesianChart GStepLineSeries
enter image description here

 public GStepLineSeries SupplyTemperatures
{
get { return _supplyTemperatures ?? (_supplyTemperatures = new GStepLineSeries() { Title = "Supply" }); }
set
{
_supplyTemperatures = value;
RaisePropertyChanged();
}
}

public GStepLineSeries ReturnTemperatures
{
get { return _returnTemperatures ?? (_returnTemperatures = new GStepLineSeries { Title = "Return" }); }
set
{
_returnTemperatures = value;
RaisePropertyChanged();
}
}

public GStepLineSeries Setpoints
{
get
{
return _setpoints ?? (_setpoints = new GStepLineSeries
{
Title = "Setpoint",
Fill = Brushes.Transparent,
PointGeometry = null
});
}
set
{
_setpoints = value;
RaisePropertyChanged();
}
}

public SeriesCollection ReeferDataTemperatureSeries
{
get
{
if (_reeferDataTemperatureSeries == null)
{
_reeferDataTemperatureSeries =
new SeriesCollection(GetSeriesConfig()) { SupplyTemperatures, ReturnTemperatures, Setpoints };

}

return _reeferDataTemperatureSeries;
}
set
{
_reeferDataTemperatureSeries = value;
RaisePropertyChanged();
}
}

private CartesianMapper<DateTimePoint> GetSeriesConfig()
{
return Mappers.Xy<DateTimePoint>()
.X(rdcv => (double)rdcv.DateTime.Ticks)
.Y(rdcv => rdcv.Value);
}

xml:
     <lvc:CartesianChart
Height="800"
DisableAnimations="True"
IsManipulationEnabled="False"
LegendLocation="Top"
Series="{Binding ReeferDataTemperatureSeries}">

<lvc:CartesianChart.AxisX>
<lvc:Axis
Title="Time"
LabelFormatter="{Binding ReeferDataFormatter}"
RangeChanged="Axis_OnRangeChanged"
Separator="{x:Static lvc:DefaultAxes.CleanSeparator}" />
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="Temperature" />
</lvc:CartesianChart.AxisY>
</lvc:CartesianChart>

最佳答案

通过进行一些更改,我能够在大约 1.5 秒内绘制图表,每个系列中有 1,000 个数据点

  • 在图表上将“Hoverable”设置为 false
  • 将所有系列上的点几何设为空

  • 我的代码版本也使用了标准图表而不是齿轮版本,因为我没有许可证,所以它对你来说可能更快。

    关于wpf - LiveCharts WPF 渲染性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46813076/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com