Как решить размер прокрутки для графического элемента управления MSchart C # - PullRequest
1 голос
/ 13 мая 2011

Я сделал график, используя MSChart, и мне удалось реализовать возможность масштабирования.

График может увеличиваться, но проблема возникает, когда я хочу перемещаться после увеличения. Когда я нажимаю вверх и вниз на полосе прокрутки по оси Y, с прокруткой все в порядке. Однако для полосы прокрутки по оси x прирост прокрутки ужасен. Он всегда будет идти до самого конца, даже если в середине есть данные.

Я пытался найти решение в Интернете, но мне не повезло

вот мой код:

        // Chart area (where the axes and series are plotted)
        ChartArea chartArea = new ChartArea();
        chartArea.AxisX.Minimum = DateTime.MinValue.ToOADate();
        chartArea.AxisY.Minimum = 0;
        chartArea.AxisY.Maximum = 100;
        //chartArea.AxisY.IntervalAutoMode = IntervalAutoMode.VariableCount;
        chartArea.AxisX.Title = "Time";
        chartArea.AxisX.LabelStyle.Format = DEFAULT_TIME_FORMAT_STRING;
        chartArea.AxisY.LabelStyle.Format = "#########################";
        chartArea.AxisX.MajorGrid.LineDashStyle = ChartDashStyle.NotSet;
        chartArea.AxisY.MajorGrid.LineDashStyle = ChartDashStyle.NotSet;
        chartArea.BackColor = Color.Transparent;

        m_chart.ChartAreas.Add(chartArea);

        //add zoom-in features for x and y axis             
        m_chart.ChartAreas[0].CursorY.Interval = 0;
        m_chart.ChartAreas[0].CursorY.IsUserEnabled = true;
        m_chart.ChartAreas[0].CursorY.IsUserSelectionEnabled = true;
        m_chart.ChartAreas[0].AxisY.ScaleView.Zoomable = true;
        m_chart.ChartAreas[0].AxisY.ScrollBar.IsPositionedInside = true;

        m_chart.ChartAreas[0].CursorX.Interval = 0;
        //m_chart.ChartAreas[0].CursorX.AutoScroll = true;
        //m_chart.ChartAreas[0].AxisX.IntervalAutoMode = IntervalAutoMode.VariableCount;
        m_chart.ChartAreas[0].CursorX.IsUserEnabled = true;
        m_chart.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
        m_chart.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
        m_chart.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = true; 

Я не вижу, что я делаю неправильно

Ответы [ 2 ]

1 голос
/ 25 февраля 2015

Установите тип масштаба для соответствующего выбора времени.

m_chart.ChartAreas[0].AxisX.ScaleView.SizeType = "Seconds";
m_chart.ChartAreas[0].AxisX.ScaleView.MinSizeType= "Seconds";
m_chart.ChartAreas[0].AxisX.ScaleView.SmallScrollMinSizeType= "Seconds";
m_chart.ChartAreas[0].AxisX.ScaleView.SmallScrollSizeType= "Seconds";
0 голосов
/ 09 ноября 2011

Просто измените

m_chart.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = false;

, тогда полоса прокрутки выйдет за пределы chartarea, и вы не столкнетесь с этой проблемой.

...