Синхронное панорамирование двух областей диаграммы - PullRequest
0 голосов
/ 19 января 2019

У меня есть один график с двумя областями.Когда я масштабирую или перемещаю по полосе прокрутки одну область диаграммы, другие области диаграммы также увеличивают и скользят.Я пытался добавить панорамирование в мой проект.Когда я искал, я нашел расширение MSChart, и мне понравилось (https://www.codeproject.com/Articles/357817/MSChart-Extension-Zoom-and-Pan-Control).

. Я хочу использовать расширение MSChart, но, как я уже сказал, мне нужно синхронизировать две области диаграммы. Когда я масштабирую одну область диаграммы, другую диаграммуобласть должна быть увеличена, или когда я перемещаю одну область, другая область диаграммы должна панорамироваться автоматически.

или мне просто нужно добавить функцию панорамирования вместо полос прокрутки без расширения 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;
            }
        }

С наилучшими пожеланиями,

1 Ответ

0 голосов
/ 23 января 2019

Если у вас есть две области диаграммы, вы можете выровнять их вместе со специальными свойствами, такими как AxisView, с помощью методов AlignWithChartArea и AlignmentStyle.

Например:

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 для среды Windows Forms

...