同步平移两个图表区域

Synchronized Panning Two Chart Areas

我有一个包含两个区域的图表。当我在一个图表区域的滚动条上缩放或滑动时,其他图表区域也会缩放和滑动。我一直在尝试将平移添加到我的项目中。当我搜索时,我发现了 MSChart Extension,我很喜欢它 (https://www.codeproject.com/Articles/357817/MSChart-Extension-Zoom-and-Pan-Control)。

我想使用 MSChart Extension,但正如我所说,我需要同步两个图表区域。当我缩放一个图表区域时,另一个图表区域必须缩放,或者当我平移一个区域时,另一个图表区域必须自动平移。

或者我只需要添加平移功能而不是没有 MSChart 扩展的滚动条。

你能帮我吗?

我是在没有 mschart 扩展的标准图表代码上完成的,使用以下代码片段它适用于鼠标滚轮缩放和在滚动条上滑动,但是当我使用 MSChart 扩展(缩放和平移)控制图表时它不会同步两个图表区域).

private void chart1_AxisViewChanged(object sender, ViewEventArgs e)
{
            if (e.Axis == chart1.ChartAreas["ChartArea1"].AxisX)
            {
                chart1.ChartAreas["ChartArea2"].AxisX.ScaleView.Size = chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.Size;
                chart1.ChartAreas["ChartArea2"].AxisX.ScaleView.Position = chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.Position;
            }

            if (e.Axis == chart1.ChartAreas["ChartArea2"].AxisX)
            {
                chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.Size = chart1.ChartAreas["ChartArea2"].AxisX.ScaleView.Size;
                chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.Position = chart1.ChartAreas["ChartArea2"].AxisX.ScaleView.Position;
            }
        }

谨致问候,

如果您有两个图表区域,您可以使用 AlignWithChartAreaAlignmentStyle 方法将它们与 AxisView 等特殊属性对齐。

例如:

using System.Windows.Forms.DataVisualization.Charting;
...

// Make Chart Area 2 align to Chart Area 1
Chart1.ChartAreas["Chart Area 2"].AlignWithChartArea = "Default"; //or "ChartArea1"

// Set the alignment type
Chart1.ChartAreas["Chart Area 2"].AlignmentStyle = AreaAlignmentStyles.Position |
                                                AreaAlignmentStyles.PlotPosition |
                                                AreaAlignmentStyles.Cursor |
                                                AreaAlignmentStyles.AxesView;    
... 

来源:Microsoft Chart for Windows Forms Samples Environment