Winforms 在Devexpress XtraCharts控件中保持不同的次轴链接

Winforms 在Devexpress XtraCharts控件中保持不同的次轴链接,winforms,charts,devexpress,xtrachart,Winforms,Charts,Devexpress,Xtrachart,我的设置是这样的:我在一个图表控件中有多个窗格(16),每个窗格都必须有自己的X轴,因为每个窗格可以有不同的条带,并且条带似乎链接到轴本身,而不是窗格或系列(奇怪) 这就是它看起来的样子:。您可以看到表示每个通道丢弃的数据包的条带,根据定义,它们在各个通道中是不同的 现在我的问题是,我还需要支持缩放和平移(已经完成),但我的X轴必须在所有窗格中保持同步。基本上,如果我放大某个时间点,每个窗格都必须放大 如何在不共享X轴的情况下实现这一点?或者,如何在共享X轴时实现每个窗格的条带?任何一种方法都可

我的设置是这样的:我在一个图表控件中有多个窗格(16),每个窗格都必须有自己的X轴,因为每个窗格可以有不同的条带,并且条带似乎链接到轴本身,而不是窗格或系列(奇怪)

这就是它看起来的样子:。您可以看到表示每个通道丢弃的数据包的条带,根据定义,它们在各个通道中是不同的

现在我的问题是,我还需要支持缩放和平移(已经完成),但我的X轴必须在所有窗格中保持同步。基本上,如果我放大某个时间点,每个窗格都必须放大

如何在不共享X轴的情况下实现这一点?或者,如何在共享X轴时实现每个窗格的条带?任何一种方法都可以解决我的问题。

您可以使用事件更新每个轴的缩放。只需为每个轴设置
VisualRange.Auto=false
VisualRange.AutoSideMargins=false

以下是
快速绘图图的示例:

private void chartControl1\u AxisVisualRangeChanged(对象发送方,AxisRangeChangedEventArgs e)
{
var axisX=e轴作为快速绘图DiagramaxisXbase;
如果(axisX==null)
返回;
var图=(快速绘图图)chartControl1.diagram;
UpdateVisualRange(axisX,diagram.axisX);
foreach(图中的SwiftPlotDiagramAxisXBase secondaryAxisX.SecondaryAxisESX)
UpdateVisualRange(axisX,secondaryAxisX);
}
私有void UpdateVisualRange(SwiftPlotDiagramAxisXBase axisFrom、SwiftPlotDiagramAxisXBase axisTo)
{
如果(axisTo!=axisFrom)
{
var rangeFrom=axisFrom.VisualRange;
var rangeTo=axisTo.VisualRange;
如果(!rangeTo.MinValue.Equals(rangeFrom.MinValue)| |!rangeTo.MaxValue.Equals(rangeFrom.MaxValue))
rangeTo.SetMinMaxValues(rangeFrom.MinValue,rangeFrom.MaxValue);
}
}

正确的方法是对所有窗格使用相同的X轴。
因此,您甚至不需要处理AxisVisualRangeChanged事件,因为所有操作都是自动完成的。

谢谢,太好了。太糟糕了,我不得不放弃该控件,它无法处理每秒600k的样本,持续10分钟左右:/Yeah,我从那以后就学会了如何处理,但从那以后我转向了手写解决方案,因为图表控件无法处理我推送的所有数据(每次48KB/秒的声音波形持续几分钟)。