谢谢Eric问这个问题。 图表和轴有事件可以帮助您自定义处理此类案例。 据记住,在相同的水平位置没有几个YAx的属性,例如放大,平移事件处理并相应地修改Axis的范围。下面是如何将两个轴(相同的段)的参考值固定到图形区域的中间的示例。
private void ViewXY_Zoomed(object sender, Arction.Wpf.Charting.Views.ViewXY.ZoomedXYEventArgs e) { AxisY axis0 = _chart.ViewXY.YAxes[0]; AxisY axis1 = _chart.ViewXY.YAxes[1]; // get segment top & bottom coordinates [PX] GraphSegmentInfo gsi = _chart.ViewXY.GetGraphSegmentInfo(); float fTop = gsi.SegmentTops[0]; float fBottom = gsi.SegmentBottoms[0]; int iScreenCoordForRefValue = (int)(fTop + fBottom) / 2; float fAxis0RefValue = 50, fAxis1RefValue = 0; double dAxis0ValueAtCoord, dAxis1ValueAtCoord; axis0.CoordToValue(iScreenCoordForRefValue, out dAxis0ValueAtCoord, false); axis1.CoordToValue(iScreenCoordForRefValue, out dAxis1ValueAtCoord, false); // pan Axis' RefValue position at RefScreenCoord double dNewMinAxis0 = axis0.Minimum - (dAxis0ValueAtCoord - fAxis0RefValue); double dNewMaxAxis0 = axis0.Maximum - (dAxis0ValueAtCoord - fAxis0RefValue); double dNewMinAxis1 = axis1.Minimum - (dAxis1ValueAtCoord - fAxis1RefValue); double dNewMaxAxis1 = axis1.Maximum - (dAxis1ValueAtCoord - fAxis1RefValue); _chart.BeginUpdate(); axis0.SetRange(dNewMinAxis0, dNewMaxAxis0); axis1.SetRange(dNewMinAxis1, dNewMaxAxis1); _chart.EndUpdate(); }